有没有更好的方法来完成另一项活动的活动?

时间:2016-03-04 12:42:48

标签: android android-intent android-activity

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

以下是我实施的内容:

FirstActivity:

在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

SecondActivity:

在SecondActivity中,我有一个onClick方法' goToThirdActivity',它启动了ThirdActivity

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

enter image description here

ThirdActivity:

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

enter image description here

在我点击“返回第一个活动”时的第三个活动'按钮,我想回到FirstActivity。

我做了什么:

SecondActivity:

我声明了静态变量

static SecondActivity secondActivityMain;

并在onCreate方法中分配:

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

}

ThirdActivity:

使用静态变量完成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。有没有更好的方法来完成另一项活动的活动?

2。这种方式是否正确?

2 个答案:

答案 0 :(得分:3)

如果你想从ThirdActivity转到FirstActivity,请使用标志" FLAG_ACTIVITY_CLEAR_TOP"它将清除第三和第二个活动

  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()方法 如果未在manifestast文件中指定lanuhMode,则OnCreate将再次被调用

答案 1 :(得分:1)

  
      
  1. 有没有更好的方法来完成另一项活动的活动?
  2.   

,您在import ast def is_valid_python_file(fname): with open(fname) as f: contents = f.read() try: ast.parse(contents) #or compile(contents, fname, 'exec', ast.PyCF_ONLY_AST) return True except SyntaxError: return False 上使用了static实例,这很容易导致内存泄漏问题。 仅在必要且非常谨慎的情况下使用Activity关键字始终是一种良好的做法。

更好的方法是使用static

因此,您需要做的是在第一次和第二次活动中创建广播接收器,以及何时想要完成这些活动。使用BroadCastreceiver方法。

你需要搜索sendBroadCast(..)在android中的工作原理。

  
      
  1. 这种方式是否正确?
  2.   

,您采取的方式不正确。