ListView и Activity

Интерфейс, диалоги, темы, стили, меню
Ответить
RoACh
Сообщения: 5
Зарегистрирован: 21 фев 2012, 22:20

ListView и Activity

Сообщение RoACh » 21 фев 2012, 22:39

Доброго времени суток. Делаю так называемую менюшку, выбор компонента которой открывает определённый Activity. Если использовать кнопки, всё прекрасно работает, но если использовать для выбора ListView, не могу даже скомпилировать. Всё делал по урокам администратора, вот код, использующий кнопку.

Код: Выделить всё

public class MatanActivity extends Activity implements OnClickListener
{
Button btnOk;
public void onCreate(Bundle savedInstanceState) 
    {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
        btnOk = (Button) findViewById(R.id.butHello);
        btnOk.setOnClickListener(this);
    }

   public void onClick(View v) 
    {
        // по id определеяем кнопку, вызвавшую этот обработчик
        switch (v.getId()) 
        {
        case R.id.butHello:
          // кнопка ОК
        	Intent intent = new Intent(this, TwoActivity.class);
            startActivity(intent);
          break;
        }
      }
    
}
решил переписать на ListView

Код: Выделить всё

public void onCreate(Bundle savedInstanceState) {
    	  super.onCreate(savedInstanceState);

    	  setListAdapter(new ArrayAdapter<String>(this, R.layout.list_item, COUNTRIES));

    	  ListView lv = getListView();
    	  lv.setTextFilterEnabled(true);

    	  lv.setOnItemClickListener(new OnItemClickListener() {
    	    public void onItemClick(AdapterView<?> parent, View view,
    	        int position, long id) {
    	      // When clicked, show a toast with the TextView text
    	      if(position==0)
    	      {
    	    	  Intent intent = new Intent(this, TwoActivity.class);
    	            startActivity(intent);
    	      }
    	    }
    	  });
    	}
    static final String[] COUNTRIES = new String[] {
        "Afghanistan", "Albania"
      };
делал по официальному мануалу http://developer.android.com/resources/ ... tview.html
Поменял extends Activity implements OnClickListener на extends ListActivity , стала подсвечиваться строка
Intent intent = new Intent(this, TwoActivity.class);
Каким образом можно выбрать TwoActivity.class, используя ListView? Заранее спасибо.

SoLVeX
Сообщения: 15
Зарегистрирован: 21 фев 2012, 19:11
Контактная информация:

Re: ListView и Activity

Сообщение SoLVeX » 22 фев 2012, 01:20

Код: Выделить всё

Intent intent = new Intent(MatanActivity.this, TwoActivity.class);
v.getContext().startActivity(intent);
Если нужно передавать данные между активити, используйте intent.putExtra(String,String);

Аватара пользователя
damager82
Администратор
Сообщения: 1383
Зарегистрирован: 07 янв 2012, 11:32
Контактная информация:

Re: ListView и Activity

Сообщение damager82 » 22 фев 2012, 09:47

RoACh писал(а): решил переписать на ListView

стала подсвечиваться строка
Intent intent = new Intent(this, TwoActivity.class);
Эта строка подсвечивается, потому что ему не нравится this.
Intent ждет на вход Context. Эта строка обычно пишется в классе Activity и this обозначает Activity. Intent-а это полностью устраивает.

В вашем случае строка находится не в Activity, а в классе new OnItemClickListener(), и this в этом случае - это класс, реализующий OnItemClickListener. Intent такое никак не может принять.

А если по-русски, то замените this на getBaseContext() и должно заработать ))
Добро пожаловать на форум сайта StartAndroid
ИзображениеИзображение

RoACh
Сообщения: 5
Зарегистрирован: 21 фев 2012, 22:20

Re: ListView и Activity

Сообщение RoACh » 22 фев 2012, 18:34

Спасибо большое)

Ответить