在Android中按下按钮时触发后退按钮功能

Sou*_*abh 47 android

我知道我们在android中有后退按钮可以将我们移回到上一个表单上,但是我的团队负责人要求在按钮上单击后退按钮功能

我怎样才能做到这一点?

sah*_*hhm 119

您应该finish()在用户单击按钮时使用,以便转到上一个活动.

Button backButton = (Button)this.findViewById(R.id.back);
backButton.setOnClickListener(new OnClickListener() {
  @Override
  public void onClick(View v) {
    finish();
  }
});
Run Code Online (Sandbox Code Playgroud)

或者,如果您真的需要,可以尝试触发自己的后退按键:

this.dispatchKeyEvent(new KeyEvent(KeyEvent.ACTION_DOWN, KeyEvent.KEYCODE_BACK));
this.dispatchKeyEvent(new KeyEvent(KeyEvent.ACTION_UP, KeyEvent.KEYCODE_BACK));
Run Code Online (Sandbox Code Playgroud)

执行这两个.

  • 为了通过dispatchKeyEvent触发后退按钮,您需要触发ACTION_DOWN,然后触发ACTION_UP.这模仿按钮单击.如果没有这两个,后退按钮将不会触发. (7认同)
  • BackButton总能完成吗?我不这么认为.片段操作怎么样? (3认同)

eka*_*was 34

如果您需要自定义按钮中后退按钮的确切功能,为什么不以这种方式调用yourActivity.onBackPressed()如果覆盖后退按钮的功能,则自定义按钮的行为将相同.

  • 不确定该评论与我的答案有什么关系...我不是要求你打电话给finish(),而是从菜单按钮点击调用onBackPressed(). (9认同)

Sou*_*abh 10

public boolean onKeyDown(int keyCode, KeyEvent event) {
             if (keyCode == KeyEvent.KEYCODE_BACK) {
                     // your code here
                     return false;
             }
         return super.onKeyDown(keyCode, event);
     }
Run Code Online (Sandbox Code Playgroud)


小智 7

layout.xml

<Button
    android:id="@+id/buttonBack"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:onClick="finishActivity"
    android:text="Back" />
Run Code Online (Sandbox Code Playgroud)

Activity.java

public void finishActivity(View v){
    finish();
}
Run Code Online (Sandbox Code Playgroud)

有关:


Atu*_*ary 5

如果您在片段内,则在单击侦听器中编写以下代码行, getActivity().onBackPressed(); 这对我来说非常有效。


小智 5

通过这段代码,我解决了我的问题。对于后退按钮,粘贴这两行代码。希望这会对您有所帮助。

仅在单击按钮时粘贴此代码

super.onBackPressed();
Run Code Online (Sandbox Code Playgroud)

例子:-

Button backButton = (Button)this.findViewById(R.id.back);
backButton.setOnClickListener(new OnClickListener() {
  @Override
  public void onClick(View v) {
    super.onBackPressed();
  }
});
Run Code Online (Sandbox Code Playgroud)