Страница 1 из 1

ListView и Activity

Добавлено: 21 фев 2012, 22:39
RoACh
Доброго времени суток. Делаю так называемую менюшку, выбор компонента которой открывает определённый 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? Заранее спасибо.

Re: ListView и Activity

Добавлено: 22 фев 2012, 01:20
SoLVeX

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

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

Re: ListView и Activity

Добавлено: 22 фев 2012, 09:47
damager82
RoACh писал(а): решил переписать на ListView

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

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

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

Re: ListView и Activity

Добавлено: 22 фев 2012, 18:34
RoACh
Спасибо большое)