使用工具栏导航回父级 activity
Navigating back to Parent activity with toolbar
所以分解一下。
我有两个活动:一个主要 activity 和一个子 activity。
当我在子activity时,我想按return主页按钮
在工具栏上,然后 return 回到主页。
我尝试将 android.support.PARENT_ACTIVITY 放入清单中,但仍然无法正常工作。也许我在这里没有看到明显的东西。希望大家帮帮忙。
这是我的子activity。
@Override
protected void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.final_create_cardview_1_image);
//Toolbar
myToolbar = (android.support.v7.widget.Toolbar) findViewById(R.id.app_bar_pic);
setSupportActionBar(myToolbar);
getSupportActionBar().setHomeButtonEnabled(true);
getSupportActionBar().setDisplayHomeAsUpEnabled(true);
}
private void setSupportActionBar(Toolbar myToolbar)
{
}
@Override
public boolean onOptionsItemSelected(MenuItem item)
{
int id = item.getItemId();
if(id == android.R.id.home)
{
NavUtils.navigateUpFromSameTask(this);
}
return super.onOptionsItemSelected(item);
}
现在这是我的清单。第一个 activity 是主要的 activity。第二个 activity 是 subactivity.
<activity
android:name=".MyActivity"
android:label="Promenade"
android:parentActivityName=".MyActivity">
<meta-data android:name="android.support.PARENT_ACTIVITY"
android:value=".CardFinal.imageActivity">
</meta-data>
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
</activity>
<activity android:name=".CardFinal.imageActivity"
android:label="PickImage">
</activity>
我不太确定我是否正确地执行了清单,Whosebug 上的其他解决方案非常混乱。如果我能对此有一个直接的答案,那就太棒了。谢谢!
@Override
public boolean onOptionsItemSelected(MenuItem item)
{
int id = item.getItemId();
if(id == android.R.id.home)
{
//NavUtils.navigateUpFromSameTask(this);
finish();
}
return super.onOptionsItemSelected(item);
}
清单有误
<activity
android:name=".MyActivity"
android:label="Promenade"
>
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
</activity>
<activity android:name=".CardFinal.imageActivity"
android:parentActivityName=".MyActivity"
android:label="PickImage">
<meta-data android:name="android.support.PARENT_ACTIVITY"
android:value=".MyActivity">
</meta-data>
</activity>
您也可以使用 Intent 或 onBackPressed() 方法
@Override
public boolean onOptionsItemSelected(MenuItem item)
{
int id = item.getItemId();
if(id == android.R.id.home)
{
//intent your parent activity
Intent intent = new Intent(getApplicationContext(),YourActivit.class);
startActivity(intent);
finish();
//Other way
onBackPressed();
}
return super.onOptionsItemSelected(item);
}
if(getSupportActionBar() != null){
getSupportActionBar().setDisplayHomeAsUpEnabled(true);
}
试试这个。
https://developer.android.com/training/implementing-navigation/ancestral.html
如果您使用 AppCompatActivity,目前最好的方法可能是覆盖 onSupportNavigateUp() 方法。
这是 Kotlin 中的代码:
override fun onSupportNavigateUp(): Boolean {
onBackPressed()
return true
}
所以分解一下。
我有两个活动:一个主要 activity 和一个子 activity。
当我在子activity时,我想按return主页按钮 在工具栏上,然后 return 回到主页。
我尝试将 android.support.PARENT_ACTIVITY 放入清单中,但仍然无法正常工作。也许我在这里没有看到明显的东西。希望大家帮帮忙。
这是我的子activity。
@Override
protected void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.final_create_cardview_1_image);
//Toolbar
myToolbar = (android.support.v7.widget.Toolbar) findViewById(R.id.app_bar_pic);
setSupportActionBar(myToolbar);
getSupportActionBar().setHomeButtonEnabled(true);
getSupportActionBar().setDisplayHomeAsUpEnabled(true);
}
private void setSupportActionBar(Toolbar myToolbar)
{
}
@Override
public boolean onOptionsItemSelected(MenuItem item)
{
int id = item.getItemId();
if(id == android.R.id.home)
{
NavUtils.navigateUpFromSameTask(this);
}
return super.onOptionsItemSelected(item);
}
现在这是我的清单。第一个 activity 是主要的 activity。第二个 activity 是 subactivity.
<activity
android:name=".MyActivity"
android:label="Promenade"
android:parentActivityName=".MyActivity">
<meta-data android:name="android.support.PARENT_ACTIVITY"
android:value=".CardFinal.imageActivity">
</meta-data>
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
</activity>
<activity android:name=".CardFinal.imageActivity"
android:label="PickImage">
</activity>
我不太确定我是否正确地执行了清单,Whosebug 上的其他解决方案非常混乱。如果我能对此有一个直接的答案,那就太棒了。谢谢!
@Override
public boolean onOptionsItemSelected(MenuItem item)
{
int id = item.getItemId();
if(id == android.R.id.home)
{
//NavUtils.navigateUpFromSameTask(this);
finish();
}
return super.onOptionsItemSelected(item);
}
清单有误
<activity
android:name=".MyActivity"
android:label="Promenade"
>
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
</activity>
<activity android:name=".CardFinal.imageActivity"
android:parentActivityName=".MyActivity"
android:label="PickImage">
<meta-data android:name="android.support.PARENT_ACTIVITY"
android:value=".MyActivity">
</meta-data>
</activity>
您也可以使用 Intent 或 onBackPressed() 方法
@Override
public boolean onOptionsItemSelected(MenuItem item)
{
int id = item.getItemId();
if(id == android.R.id.home)
{
//intent your parent activity
Intent intent = new Intent(getApplicationContext(),YourActivit.class);
startActivity(intent);
finish();
//Other way
onBackPressed();
}
return super.onOptionsItemSelected(item);
}
if(getSupportActionBar() != null){
getSupportActionBar().setDisplayHomeAsUpEnabled(true);
}
试试这个。
https://developer.android.com/training/implementing-navigation/ancestral.html
如果您使用 AppCompatActivity,目前最好的方法可能是覆盖 onSupportNavigateUp() 方法。
这是 Kotlin 中的代码:
override fun onSupportNavigateUp(): Boolean {
onBackPressed()
return true
}