我有MainActivity
和SecondActivity
。
的AndroidManifest.xml
<activity
android:name=".MainActivity"
android:label="@string/app_name" >
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
<activity
android:name=".SecondActivity"
android:label="@string/title_activity_second_activitity"
android:parentActivityName=".MainActivity" >
</activity>
当我点击SecondActivity
的后退图标时,MainActivity
推送SecondActivity
的可能性更大。相反,物理后退按钮会弹出SecondActivity
并返回MainActivity
。
如何使后退箭头图标的行为与物理后退按钮相同?
答案 0 :(得分:10)
根据谷歌的指南,物理后退按钮和图标后退按钮不应该以相同的方式工作。但是如果你想改变它的行为,你需要通过下一步来改写它的功能:
在您的SecondActivity覆盖onOptionsItemSelected
@Override
public boolean onOptionsItemSelected(MenuItem item) {
if (item.getItemId() == android.R.id.home) {
onBackPressed(); //Call the back button's method
return true;
}
return super.onOptionsItemSelected(item);
}
此外,您需要从清单中删除android:parentActivityName=".MainActivity"
,但要避免删除后退图标,您需要将其设置为启用:
@Override
public boolean onCreate(Bundle savedInstanceState) {
...
ActionBar actionBar = getActionBar(); //Make sure you are extending ActionBarActivity
actionBar.setDisplayHomeAsUpEnabled(true);
actionBar.setHomeButtonEnabled(true);
//It's also possible to use getSupportActionBar()
}
答案 1 :(得分:4)
卡洛斯&#39;回答有效。还有另一种方法,我认为更直接:只需将一个点击监听器直接添加到后面的图标。
toolbar.setNavigationOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
finish();
}
});
答案 2 :(得分:2)
要实现此行为,您可以将MainActivity的launchMode定义为singleTop活动。通过添加以下行在您的Manifest中轻松完成:
<activity
android:name=".MainActivity"
android:label="@string/app_name"
android:launchMode="singleTop" >
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
<activity
android:name=".SecondActivity"
android:label="@string/title_activity_second_activitity"
android:parentActivityName=".MainActivity" >
<meta-data
android:name="android.support.PARENT_ACTIVITY"
android:value=".MainActivity" />
</activity>
如果您想支持API 15及更低版本,我建议您在SecondActivity中添加元数据元素,如上所示。
答案 3 :(得分:1)
你需要添加3件事来定义你想要进行什么样的活动,不要将该活动推到堆栈上,并使后退按钮的行为与物理后退按钮相同。
1。定义按下back button
时要进入的活动。
在manifest
文件的activity
标记中包含
<activity
android:name=".SecondActivity"
android:parentActivityName=".MainActivity" >
<meta-data //Use meta-data if you are using support library
android:name="android.support.PARENT_ACTIVITY"
android:value=".MainActivity" />
2。覆盖onBackPressed
文件中的SecondActivity.class
方法,以便在按下后退按钮时不将MainActivity
推入堆栈。
@Override
public void onBackPressed(){
Intent i = new Intent(getApplicationContext(), MainActivity.class);
startActivity(i);
finish();
}
3。使用showHomeAsUpEnabled()
在actionBar中设置后退按钮。
ActionBar().setDisplayHomeAsUpEnabled(true);
或getSupportActionBar().setDisplayHomeAsUpEnabled(true);
。
答案 4 :(得分:0)
doc.text(20, 20, `Time: ${this.hour} : ${this.minutes}`);