如何支持相同的活动?

时间:2016-04-28 13:58:07

标签: android listview android-activity

我有一项活动首先显示<string-array name="main">。这个“主”阵列包括两个项目 - &gt; (类别和制造商)。我还在<string-array name="Category">中定义了<string-array name="Manufacturer">String.xml,每个都包含五个项目。

单击“类别”项时,显示类别的项目,制造商的项目相同。但是这里我有一个问题,例如,如果我首先点击“类别”项目,它的项目会显示但我无法再回到包含(类别和制造商)项目的“主”数组。

当我点击设备上的“返回”时,应用程序已关闭,因为我正在使用相同的活动来显示不同的列表。

有没有办法在没有创建新活动的情况下允许我返回并显示带有后退选项的“主要”列表?

main.java

public class MainActivity extends Activity implements OnItemClickListener{

    ListView lv;
    String [] list;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        lv=(ListView)findViewById(R.id.listView);
        list=getResources().getStringArray(R.array.main);

        lv.setAdapter(new ArrayAdapter<String>(this,android.R.layout.simple_list_item_1,list));
        lv.setOnItemClickListener(this);


    }

    @Override
    public void onItemClick(AdapterView<?> parent, View view, int position,
            long id) {
        switch(lv.getItemAtPosition(position).toString()){
        case "Category":
            list=getResources().getStringArray(R.array.Category);
            lv.setAdapter(new ArrayAdapter<String>(this,android.R.layout.simple_list_item_1,list));
            break;

        case "Manufacturer":
            list=getResources().getStringArray(R.array.Manufacturer);
            lv.setAdapter(new ArrayAdapter<String>(this,android.R.layout.simple_list_item_1,list));
            break;


        }

    }

}

String.xml

<?xml version="1.0" encoding="utf-8"?>
<resources>

    <string name="app_name">ShaymaTest</string>
    <string name="hello_world">Hello world!</string>
    <string name="action_settings">Settings</string>

    <string-array name="main">
        <item >Category</item>
        <item >Manufacturer</item>

    </string-array><string-array name="Category">
        <item >Category</item>
        <item >Category</item>
        <item >Category</item>
        <item >Category</item>
        <item >Category</item>
    </string-array><string-array name="Manufacturer">
        <item >Manufacturer</item>
        <item >Manufacturer</item>
        <item >Manufacturer</item>
        <item >Manufacturer</item>
        <item >Manufacturer</item>
    </string-array>

</resources>

1 个答案:

答案 0 :(得分:0)

您可以声明变量以了解当前状态并覆盖此{/ p>的onBackPressed方法

private boolean inSub = false;

    @Override
    public void onItemClick(AdapterView<?> parent, View view, int position,
            long id) {
        inSub = true;
        switch(lv.getItemAtPosition(position).toString()){

[.....]

    @Override
    public void onBackPressed() {
        if (inSub){
            list=getResources().getStringArray(R.array.main);
            lv.setAdapter(new ArrayAdapter<String>(this,android.R.layout.simple_list_item_1,list));
            inSub = false;
        }else{
            super.onBackPressed();
        }
    }