android - 有没有更好的方法来完成另一个 Activity 的 Activity ?

标签 android android-intent android-activity

我有 3 个 Activity FirstActivity、SecondActivity 和 ThirdActivity。 FirstActivity 导致 SecondActivity 导致 ThirdActivity。我希望能够在 FirstActivity 和 SecondActivity 、 FirstActivity 和 ThirdActivity 之间来回移动。

这是我实现的:

第一个 Activity :

在 FirstActivity 中,我有一个 onClick 方法“goToSecondActivity”,它会启动 SecondActivity

 public void goToSecondActivity(View view){
        Intent i = new Intent(this, SecondActivity.class);
        final EditText firstText = (EditText) findViewById(R.id.firstText);
        String userMessage = firstText.getText().toString();
        if(!"".equals(userMessage))
        i.putExtra("firstMessage",userMessage);

        startActivity(i);
    }

enter image description here

第二个 Activity :

再次在 SecondActivity 中,我有一个 onClick 方法“goToThirdActivity”,它会启动 ThirdActivity

public void goToThirdActivity(View view){
        Intent i = new Intent(this , ThirdActivity.class);
        startActivity(i);
    }

enter image description here

第三 Activity :

在 ThirdActivity 中,我在两个不同的按钮上有两个 onClick 方法“backToFirstActivity”和“backToPreviousActivity”

enter image description here

在 ThirdActivity 上,当我单击“返回第一个 Activity ”按钮时,我想返回到 FirstActivity。

我做了什么:

第二个 Activity :

我已经声明了静态变量

static SecondActivity secondActivityMain;

并在 onCreate 方法中赋值:

protected void onCreate(Bundle savedInstanceState) {
       ---
       ---
        secondActivityMain = this;
       ---
       ---

}

第三 Activity :

使用静态变量完成 SecondActivity "SecondActivity.secondActivityMain.finish();"

 public void backToFirstActivity(View view) {
        Toast.makeText(getApplicationContext(), "Third: finished second activity ",
                Toast.LENGTH_SHORT).show();

        new Handler().postDelayed(new Runnable() {
            @Override
            public void run() {
                SecondActivity.secondActivityMain.finish();
                ThirdActivity.this.finish();
            }
        }, 2000);

    }

我的问题是:

<强>1。有没有更好的方法从另一个 Activity 中完成 Activity ?

<强>2。这种方式对吗?

最佳答案

如果您想从 ThirdActivity 转到 FirstActivity,请使用带有标志“FLAG_ACTIVITY_CLEAR_TOP”的此 Intent ,它将清除第三个和第二个 Activity

  Intent intent = new Intent(ThirdActivity.this, MainActivity.class);
            intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
            startActivity(intent);

对于 FirstActivity 在 Manifeast 文件中如果指定了 android:launchMode="singleTop"那么当你从 ThirdActivity 到 FirstActivity 时将不会调用 OnCreate() 方法 如果您未在 list 文件中指定 lanuhMode,则将再次调用 OnCreate

关于android - 有没有更好的方法来完成另一个 Activity 的 Activity ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35796390/

相关文章:

android - 我在构建 Android AOSP 时不小心卸载了 jack 服务器

java - Android、启动器/从网络浏览器打开第 3 方 native 应用程序(Whatsapp、Line、Facebook、Viber)

android - 我应该创建单独的 Activity 来检查用户是否登录?

Android 应用程序结构 - Activity 与 Fragment

Visual Studio 2015 基本应用程序中的 Java 版本 1.7(Android、Gradle)

android - ViewBinder 只修改所有 ListView 行中的一项

安卓绑定(bind)库

java - 从 android 保存 csv。共享时文件无标题

android - 如何启动一个 Activity 两次?

java - 重新创建 Activity 后恢复 fragment