【问题标题】:Android Studio: Back Button for previous ActivityAndroid Studio:上一个活动的后退按钮
【发布时间】:2017-02-02 11:26:57
【问题描述】:

我用Navigation Drawer 创建了一个Activity,并用ImageButton 替换了选项图标(位于右上角)来处理后点击。

问题是,我不知道该怎么做。我对如何使用后退按钮有点困惑。我应该做什么代码才能转到以前的Activity

后退按钮: Activity 到另一个 Activity 和 MainActivity 到 Fragment Activity。

这是我的清单代码:

   <activity
        android:name="com.teamamazing.with_sidebar.activity.Accomodation"
        android:label="Accomodation"
        android:parentActivityName="com.teamamazing.with_sidebar.activity.SpecialPage">
        <meta-data
            android:name="android.support.PARENT_ACTIVITY"
            android:value="com.teamamazing.with_sidebar.activity.SpecialPage" />
    </activity>

这是我的住宿活动:

package com.teamamazing.with_sidebar.activity;
import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
import com.teamamazing.with_sidebar.R;


public class Accomodation extends AppCompatActivity {

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_accomodation);
  } }

这是我的 SpecialPage 代码:,它将是父活动。

package com.teamamazing.with_sidebar.activity;


import android.content.Intent;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.ImageButton;
import com.teamamazing.with_sidebar.R;


public class SpecialPage extends AppCompatActivity {

public ImageButton accomodation;


public void init() {
    accomodation = (ImageButton) findViewById(R.id.AccomodationButton);
    accomodation.setOnClickListener(new View.OnClickListener() {

        public void onClick(View v) {

            Intent accomodation = new Intent(SpecialPage.this, Accomodation.class);

            startActivity(accomodation);


        }
    });
}


@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_special_page);

    init();
}}

谢谢你的回答。

【问题讨论】:

  • 您可以启动previous活动的新实例,或者finish()当前活动转到上一个活动,如果它还没有完成。
  • 我的两分钱在这里,你为什么需要一个后退按钮? Android 在后台处理活动堆栈本身就非常好。编辑:如果您需要后退箭头(按钮),请将其放在左上角,以考虑材料设计指南。
  • @JacksOnF1re 我在左下角有导航抽屉图标,所以我不知道我要在哪里放置后退按钮。 XD
  • 改变了我的想法:如果你在一个片段中,那么重写活动的 onBackPressed 方法并自己处理片段循环。
  • 请选择正确答案,解决您的问题。

标签: android android-fragments android-intent android-activity activity-lifecycle


【解决方案1】:

您可以使用 onBackPressed()finish() 方法。

  buttonClickOBJ.setOnClickListener(new View.OnClickListener() {
    public void onClick(View v) {

       onBackPressed();

    }
});

onBackPressed ()

当 Activity 检测到用户按下背部时调用 钥匙。默认实现只是完成当前活动, 但是你可以覆盖它来做任何你想做的事情。

【讨论】:

  • 这段代码应该放在哪里?如果我没记错的话,是在 Accomodation.java 中吗?谢谢
  • @AlyzaMarieIgnacio Where this code should be placed?。我的问题是你想要的?
  • 将它放在您的活动或片段中,这会在活动上调用它。
  • @AlyzaMarieIgnacio setOnClickListener 是演示。请告诉我们您想去哪里
  • 你可以在ClickListener上使用你的住宿按钮。并且可能重命名资源名称以使其以小写字母开头。
【解决方案2】:

您也可以使用以下方法。

@Override
public boolean onOptionsItemSelected(MenuItem item){

    switch(item.getItemId()){
        case android.R.id.home:
            finish();
            return true;
    }
    return super.onOptionsItemSelected(item);
}

【讨论】:

  • home 是你要返回的布局
【解决方案3】:

简单的方法

public void onBackPressed() {

    AlertDialog.Builder builder = new AlertDialog.Builder(MainActivity.this);
    builder.setTitle(R.string.app_name);
    builder.setIcon(R.mipmap.ic_launcher);
    builder.setMessage("If You Enjoy The App Please Rate us?")
            .setCancelable(false)
            .setPositiveButton("Yes", new DialogInterface.OnClickListener() {
                public void onClick(DialogInterface dialog, int id) {
                    Intent play =
                            new Intent(Intent.ACTION_VIEW, Uri.parse("https://play.google.com/store/apps/details?id=kd.travellingtips"));
                    startActivity(play);
                }
            })
            .setNegativeButton("No", new DialogInterface.OnClickListener() {
                public void onClick(DialogInterface dialog, int id) {
                    finish();
                }
            });
    AlertDialog alert = builder.create();
    alert.show();

}

【讨论】:

    【解决方案4】:

    首先,将侦听器添加到您要与之关联的按钮。然后在方法中启动一个后按选项。

    【讨论】:

    • 显然是从 IntelliJ Amiya 的答案中复制的。编辑:是的,也错了。
    • 不过,这个答案在 Amiyas 的答案中添加了哪些信息?
    • 如果其中一个答案解决了您的问题,请将其标记为正确答案。虽然我建议选择 IntelliJ Amiyas 答案。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多