我想在操作栏中自定义活动后退按钮,而不是在硬键后退按钮中.我已经覆盖了这个onBackPressed()方法.它适用于我的模拟器后退按钮,但不适用于操作栏后退按钮.
我希望它与动作栏一起发生.我怎样才能做到这一点?
这是我的代码:
@Override
public void onBackPressed() {
Toast.makeText(getApplicationContext(),"Back button clicked", Toast.LENGTH_SHORT).show();
return;
}
Run Code Online (Sandbox Code Playgroud)
我已经使用了这个toast,无论后退是否有效,但实际的实现变化就像回到之前的活动一样.但是这不适用于操作栏顶部的按钮(除了活动的标题).
请任何人指出我的问题.
ibr*_*maz 200
我想你想要覆盖主页按钮的点击操作.您可以在活动中覆盖此功能.
@Override
public boolean onOptionsItemSelected(MenuItem item) {
switch (item.getItemId()) {
case android.R.id.home:
Toast.makeText(getApplicationContext(),"Back button clicked", Toast.LENGTH_SHORT).show();
break;
}
return true;
}
Run Code Online (Sandbox Code Playgroud)
ruX*_*ruX 40
如果您希望ActionBar后退按钮的行为与硬件后退按钮相同:
@Override
public boolean onOptionsItemSelected(MenuItem item) {
if (item.getItemId() == android.R.id.home) {
onBackPressed();
return true;
}
return false;
}
Run Code Online (Sandbox Code Playgroud)
ssi*_*nik 10
要记住两件事情,用户可以按下后退按钮或按动作栏主页按钮.
因此,如果您想将他重定向到同一目的地,那么您可以这样做.
@Override
public boolean onOptionsItemSelected(MenuItem item) {
switch (item.getItemId()) {
case android.R.id.home:
onBackPressed();
return true;
}
return false;
}
@Override
public void onBackPressed() {
super.onBackPressed();
Intent intent = new Intent(CurrentActivity.this, NextActivity.class);
startActivity(intent);
finish();
}
Run Code Online (Sandbox Code Playgroud)
这将使用户按下任意键或操作栏按钮.
@Override
public boolean onOptionsItemSelected(MenuItem item) {
switch (item.getItemId()) {
case android.R.id.home:
finish();
break;
}
return true;
}
Run Code Online (Sandbox Code Playgroud)
小智 6
(1)为您的子活动添加父活动(AndroidManifest.xml)
<activity
android:name=".ParentActivity" />
Run Code Online (Sandbox Code Playgroud)
(2) 重写子Activity内部的onSupportNavigateUp方法
@Override
public boolean onSupportNavigateUp() {
onBackPressed();
return false;
}
Run Code Online (Sandbox Code Playgroud)
对不起,我的回答很晚,但是对于其他到达此页面并遇到相同问题的人,我尝试了以下方法:
@Override
public boolean onOptionsItemSelected(MenuItem item) {
...
if (item.getItemId() == android.R.id.home) {
....
}
....
}
Run Code Online (Sandbox Code Playgroud)
但这未能捕捉到“返回”按钮的按下。
最终,我在/sf/answers/2602973411/上找到了一种对我有用的方法,该方法将覆盖“ onSupportNavigateUp()”,因为我正在使用“ AppCompatActivity”支持库中的操作栏。(较新的操作栏/工具栏库有一个等效的“ onNavigateUp()”。)
@Override
public boolean onSupportNavigateUp(){
finish();
return true;
}
Run Code Online (Sandbox Code Playgroud)
我从清单文件中删除了“ android:parentActivityName =“。MainActivity”部分。
| 归档时间: |
|
| 查看次数: |
75540 次 |
| 最近记录: |