android - 向上指示器无法正常工作
android - up indicator not working properly
我构建这个是为了测试我的应用程序在低端设备上的工作方式(资源量小,android 的旧版本等),这种情况下指示器仅在我的 2.3 中不起作用。 5 api 10. 不工作意味着它不会带我回到 parent activity。然而,Toast 是为了查看发生了什么,这次只有 toast 在该设备上完美显示,但仍然没有导航到 parent activity (main activity)
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);
}
}
parent 已在 Mainefest 中设置:
....
<activity
android:name=".Main2Activity"
android:parentActivityName=".MainActivity"></activity>
</application>
....
同样,这在模拟器和我测试过的其他设备(如 Nexus 5)中没有任何问题(API 19),但不能正常工作:
Toast 已创建:
知道为什么上升指标没有带我回到主线 activity 吗?
在你的 onOptionsItemSelected()
添加 NavUtils.navigateUpFromSameTask(this);
也 return true 消费事件..
void navigateUpFromSameTask (Activity sourceActivity)
: Convenience
method that is equivalent to calling navigateUpTo(sourceActivity,
getParentActivityIntent (sourceActivity)). sourceActivity will be
finished by this call.
@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,您还可以使用指定 "android.support.PARENT_ACTIVITY"
值的 <meta-data>
元素声明父级 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>
我构建这个是为了测试我的应用程序在低端设备上的工作方式(资源量小,android 的旧版本等),这种情况下指示器仅在我的 2.3 中不起作用。 5 api 10. 不工作意味着它不会带我回到 parent activity。然而,Toast 是为了查看发生了什么,这次只有 toast 在该设备上完美显示,但仍然没有导航到 parent activity (main activity)
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);
}
}
parent 已在 Mainefest 中设置:
....
<activity
android:name=".Main2Activity"
android:parentActivityName=".MainActivity"></activity>
</application>
....
同样,这在模拟器和我测试过的其他设备(如 Nexus 5)中没有任何问题(API 19),但不能正常工作:
Toast 已创建:
知道为什么上升指标没有带我回到主线 activity 吗?
在你的 onOptionsItemSelected()
添加 NavUtils.navigateUpFromSameTask(this);
也 return true 消费事件..
void navigateUpFromSameTask (Activity sourceActivity)
: Convenience method that is equivalent to calling navigateUpTo(sourceActivity, getParentActivityIntent (sourceActivity)). sourceActivity will be finished by this call.
@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,您还可以使用指定 "android.support.PARENT_ACTIVITY"
值的 <meta-data>
元素声明父级 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>