Android:我想要一个新活动来调用新活动

时间:2015-05-22 06:24:21

标签: android listview onclick

我做了一个主要活动来调用像这样的新活动

public class Main extends ActionBarActivity implements AdapterView.OnItemClickListener{

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.layout);
    String[] item = getResources().getStringArray(R.array.main_list);

    ListView list = (ListView) findViewById(R.id.list);
    list.setAdapter(new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1, item));
    list.setOnItemClickListener(this);

}

public void onItemClick(AdapterView<?> parent, View v, int pos, long id){
    Intent intent = null;
    switch (pos){
        case 0 : intent = new Intent(getBaseContext(), a.class); break;
        case 1 : intent = new Intent(getBaseContext(), b.class); break;
        case 2 : intent = new Intent(getBaseContext(), c.class); break;
        default: intent = null;
    }

    if(intent != null) startActivity(intent);
}

}

我成功地召集了一项名为'a'的新活动。

但是,当我尝试从'a'调用另一个新活动时,我在Main中使用相同的代码失败了。 有什么问题?

的A.class

public class a extends ActionBarActivity implements AdapterView.OnItemClickListener {
@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.layout);
    String[] item = getResources().getStringArray(R.array.a_list);

    ListView list = (ListView) findViewById(R.id.alist);
    list.setAdapter(new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1, item));
    list.setOnItemClickListener(this);

}

public void onItemClick(AdapterView<?> parent, View v, int pos, long id){
    Intent intent = null;
    switch (pos){
        case 0 : intent = new Intent(getBaseContext(), aa.class); break;
        case 1 : intent = new Intent(getBaseContext(), ab.class); break;
        case 2 : intent = new Intent(getBaseContext(), ac.class); break;
        default: intent = null;
    }

    if(intent != null) startActivity(intent);
}

}

具体来说,应用程序启动后,单击列表中的“a”会崩溃

1 个答案:

答案 0 :(得分:0)

您正在同一个目标对象上调用活动。而不是为不同的类创建不同的对象。像

这样的东西
case 0: Intent i1=new Intent(source, destination);
        startActivity(i1);
        break;
case 1: Intent i2=new Intent(source,destination);
        startActivity(i2);
        break;
   etc..........

或者为不同的类创建不同的对象 a,b和c的一个意图对象。 和aa,ab和ac的第二个对象。