我有一项活动首先显示<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>
答案 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();
}
}