2014-02-13 2 views
0

Я пытаюсь использовать метод ListIctivity OnItemListClick для запуска нового действия с более конкретной информацией о элементе списка. Чтобы сделать это, я использую пакет, как рекомендовал главный ответ How do I pass an object from one activity to another on Android?, но независимо от того, что я пытаюсь сделать, OnItemListClick, похоже, ничего не делает. Я также пробовал, не передавая пучок, думая, что это вызвало проблему, как указано здесь Using an intent to start new activity from ListActivity, и это также ничего не делает onClick. Как я могу это сделать, если щелкнуть элемент в списке, он возвращает объект, связанный с этой строкой, и передает его в новое действие?Не удалось запустить намерение из ListActivity OnItemListClick

public class TaskList extends ListActivity { 

private ArrayList<Task> stuffToDo, completed; 
private TaskAdapter t_adapter; 
public Button add; 
private File saveFile; 
private Bundle clickBundle = new Bundle(); 

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_task_list); 
    stuffToDo = new ArrayList<Task>(); 
    completed = new ArrayList<Task>(); 
    t_adapter = new TaskAdapter(this, R.layout.row_rl, stuffToDo); 

    setListAdapter(t_adapter); 
} 

@Override 
protected void onListItemClick(ListView l, View v, int position, long id) { 

    super.onListItemClick(l, v, position, id); 
    // Make a bundle and put the Task selected in it then pass this to the 
    // intent to start the new activity 
    Intent launchIntent = new Intent(getApplicationContext(), TaskDisplay.class); 
    Log.d("Debug", "Intent made"); 
    clickBundle.clear(); 
    clickBundle.putSerializable("Task", stuffToDo.get(position)); 
    Log.d("Debug", "Task put in bundle"); 
    launchIntent.putExtras(clickBundle); 
    this.startActivity(launchIntent); 
    Log.d("Debug", "launched"); 


} 


@Override 
public boolean onMenuItemSelected(int featureId, MenuItem item) { 
    // TODO Auto-generated method stub 
    switch (item.getItemId()) { 
    case R.id.addtaskbutton: 
     promptUserForInfo(); 
     t_adapter.notifyDataSetChanged(); 
     // added for debug 
     saveInfo(); 
     return true; 
    case R.id.cleartasks: 
     clearTasks(); 
     t_adapter.notifyDataSetChanged(); 
     return true; 
    } 

    return super.onMenuItemSelected(featureId, item); 
} 

и мой код, который находится в более специфической активности

//  Set the bundle equal to the extra put with the intent 
     input = this.getIntent().getExtras(); 
//  If there are extras(a task) then assign it to the empty task variable 
     if (input != null){ 
      task = (Task) input.getSerializable("Task"); 
     } 
+0

поймать ли ваш прослушивателя события на всех? –

+0

У вас задан класс TaskDisplay в манифесте ур? –

ответ

1

здесь это означает, что вы направляете в сторону списка.

изменение Intent launchIntent = new Intent(this, TaskDisplay.class);

намерению launchIntent = new Intent(youractivityname.this, TaskDisplay.class);

или к Intent launchIntent = new Intent(getApplicationContext(), TaskDisplay.class);

и сделать этот первый super.onListItemClick(l, v, position, id); линию элемента списка методом щелчка.

+0

Я не думаю, что это будет иметь значение –

+0

Я дал это попробовать, и я сделал это с тем, что человек выше вас сказал, и он все еще не работает. – user3282276

+0

можете у вас, пожалуйста, вставьте здесь еще код. –

0

Попробуйте это ...

this.startActivity(launchIntent); 
+0

Я дал это попытка, и это не сработало – user3282276

Смежные вопросы