简体   繁体   中英

Unable to start intent from within ListActivity OnItemListClick

I am trying to use the OnItemListClick method of ListActivity to launch a new activity with more specific information about the list item. To do this I am using a bundle as advised by the top answer of How do I pass an object from one activity to another on Android? but no matter what I try the OnItemListClick doesn't seem to do anything. I also tried without passing the bundle thinking that was causing a problem as advised here Using an intent to start new activity from ListActivity and that also does nothing onClick. How am I supposed to make it so when an item in the listview is clicked it returns the object associated with that row and passes it to a new activity?

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);
}

and my code that is in the more specific activity

//      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");
        }

here this mean you are pointing towards list.

change Intent launchIntent = new Intent(this, TaskDisplay.class);

to Intent launchIntent = new Intent(youractivityname.this, TaskDisplay.class);

or to Intent launchIntent = new Intent(getApplicationContext(), TaskDisplay.class);

and make this super.onListItemClick(l, v, position, id); first line of list item click method.

尝试这个...

this.startActivity(launchIntent);

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM