我已经构建了这个以测试我的应用程序如何在低端设备上工作(拥有少量资源,旧版本的android等),这种情况下指标不能仅在我的2.3.5 api 10中工作。不工作意味着它不会让我回到父活动。然而,Toast是为了看看发生了什么,这次只有吐司在该设备上完美显示但仍未导航到父活动(主要活动)
Main2Activity:
public class Main2Activity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main2);
getSupportActionBar().setDisplayShowHomeEnabled(true);
getSupportActionBar().setDisplayHomeAsUpEnabled(true);
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
switch (item.getItemId()) {
case android.R.id.home:
Toast.makeText(this, "Up Button is clicked!", Toast.LENGTH_SHORT).show();
break;
}
return super.onOptionsItemSelected(item);
}
}
父级已在Mainefest中设置:
....
<activity
android:name=".Main2Activity"
android:parentActivityName=".MainActivity"></activity>
</application>
....
同样,这完全没有任何问题,模拟器和我测试的其他设备,如Nexus 5(API 19),不仅仅是工作:
创建了Toast:
知道为什么上升指标没有让我回到主要活动?
答案 0 :(得分:1)
在onOptionsItemSelected()
添加NavUtils.navigateUpFromSameTask(this);
同样返回true以消耗事件..
void navigateUpFromSameTask (Activity sourceActivity)
:方便 方法,相当于调用navigateUpTo(sourceActivity, getParentActivityIntent(sourceActivity))。 sourceActivity将是 完成了这个电话。
@Override
public boolean onOptionsItemSelected(MenuItem item) {
switch (item.getItemId()) {
// Respond to the action bar's Up/Home button
case android.R.id.home:
NavUtils.navigateUpFromSameTask(this);
Toast.makeText(this, "Up Button is clicked!", Toast.LENGTH_SHORT).show();
return true;
}
return super.onOptionsItemSelected(item);
}
另外,要支持API级别4 - 16,您还可以使用<meta-data>
元素声明父活动,该元素指定"android.support.PARENT_ACTIVITY"
的值。例如:
<activity
android:name="com.example.app.ChildActivity"
android:label="@string/title_child_activity"
android:parentActivityName="com.example.app.MainActivity" >
<!-- Parent activity meta-data to support API level 4+ -->
<meta-data
android:name="android.support.PARENT_ACTIVITY"
android:value="com.example.app.MainActivity" />
</activity>