Android 工具栏向上按钮未启动父级 Activity
Android ToolBar Up button not launching Parent Activity
我有一个应用程序,我首先显示一个设置屏幕,用户可以在其中保存一些详细信息,我想在用户单击工具栏中的向上按钮时启动主 Activity,但当前单击向上按钮时应用刚刚关闭。
这是我的清单
<activity
android:name="com.xyz.activity.MainActivity"
android:label="@string/title_activity_welcome"
android:launchMode="standard"
android:theme="@style/MyMaterialTheme" />
<activity
android:name="com.xyz.activity.IntroActivity"
android:theme="@style/MyMaterialTheme">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
<activity android:name="com.xyz.activity.SetLocationActivity"
android:parentActivityName="com.xyz.activity.MainActivity">
<!-- Parent activity meta-data to support 4.0 and lower -->
<meta-data
android:name="android.support.PARENT_ACTIVITY"
android:value="com.xyz.activity.MainActivity" />
</activity>
和
@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);
return true;
}
return super.onOptionsItemSelected(item);
}
任何帮助
这就是我最终要做的(以防有人觉得有用)
@Override
public boolean onOptionsItemSelected(MenuItem item) {
switch (item.getItemId()) {
// Respond to the action bar's Up/Home button
case android.R.id.home:
Intent intent = new Intent(this, MainActivity.class);
startActivity(intent);
return true;
}
return super.onOptionsItemSelected(item);
}
当您如下指定 android:parentActivityName
属性和 <meta-data.../>
时:
<activity
android:name=".activity.EditProfileActivity"
android:label="@string/title_activity_edit_profile"
android:parentActivityName=".activity.ProfileActivity"
android:theme="@style/AppTheme.NoActionBar">
<meta-data
android:name="android.support.PARENT_ACTIVITY"
android:value="com.via.android.activity.ProfileActivity" />
</activity>
您只需设置
getSupportActionBar().setDisplayHomeAsUpEnabled(true);
在你的 onCreate()
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
getSupportActionBar().setDisplayHomeAsUpEnabled(true);
...
}
其余的事情由 Android 框架处理。
从您的代码中删除以下内容:
@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);
return true;
}
return super.onOptionsItemSelected(item);
}
我有一个应用程序,我首先显示一个设置屏幕,用户可以在其中保存一些详细信息,我想在用户单击工具栏中的向上按钮时启动主 Activity,但当前单击向上按钮时应用刚刚关闭。
这是我的清单
<activity
android:name="com.xyz.activity.MainActivity"
android:label="@string/title_activity_welcome"
android:launchMode="standard"
android:theme="@style/MyMaterialTheme" />
<activity
android:name="com.xyz.activity.IntroActivity"
android:theme="@style/MyMaterialTheme">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
<activity android:name="com.xyz.activity.SetLocationActivity"
android:parentActivityName="com.xyz.activity.MainActivity">
<!-- Parent activity meta-data to support 4.0 and lower -->
<meta-data
android:name="android.support.PARENT_ACTIVITY"
android:value="com.xyz.activity.MainActivity" />
</activity>
和
@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);
return true;
}
return super.onOptionsItemSelected(item);
}
任何帮助
这就是我最终要做的(以防有人觉得有用)
@Override
public boolean onOptionsItemSelected(MenuItem item) {
switch (item.getItemId()) {
// Respond to the action bar's Up/Home button
case android.R.id.home:
Intent intent = new Intent(this, MainActivity.class);
startActivity(intent);
return true;
}
return super.onOptionsItemSelected(item);
}
当您如下指定 android:parentActivityName
属性和 <meta-data.../>
时:
<activity
android:name=".activity.EditProfileActivity"
android:label="@string/title_activity_edit_profile"
android:parentActivityName=".activity.ProfileActivity"
android:theme="@style/AppTheme.NoActionBar">
<meta-data
android:name="android.support.PARENT_ACTIVITY"
android:value="com.via.android.activity.ProfileActivity" />
</activity>
您只需设置
getSupportActionBar().setDisplayHomeAsUpEnabled(true);
在你的 onCreate()
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
getSupportActionBar().setDisplayHomeAsUpEnabled(true);
...
}
其余的事情由 Android 框架处理。
从您的代码中删除以下内容:
@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);
return true;
}
return super.onOptionsItemSelected(item);
}