我有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);
}
SecondActivity:
在SecondActivity中,我有一个onClick方法' goToThirdActivity',它启动了ThirdActivity
public void goToThirdActivity(View view){
Intent i = new Intent(this , ThirdActivity.class);
startActivity(i);
}
ThirdActivity:
在ThirdActivity中我有两个onClick方法' backToFirstActivity'和' backToPreviousActivity'在两个不同的按钮上
在我点击“返回第一个活动”时的第三个活动'按钮,我想回到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。这种方式是否正确?
答案 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)
- 有没有更好的方法来完成另一项活动的活动?
醇>
是,您在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中的工作原理。
- 这种方式是否正确?
醇>
否,您采取的方式不正确。