我正在尝试使用Intent来开启java.class活动来理解教程。我可以设法使用以下代码打开活动:
Intent in = new Intent(MainActivity.this, settingmenu.class);
startActivity(in);
setResult(Activity.RESULT_OK);
finish();
在该活动中,我计划在设置中使用edittexts,但首先我想了解如何简单地返回到上一个活动。我的按钮的onClick方法使用以下方法:
public void cancel()
{
this.finish();
return;
}
然而,当按下按钮时,应用程序崩溃。我的做法有何不同?有几个教程说使用finish(),但我感觉不对。
答案 0 :(得分:2)
我想了解如何简单地返回上一个活动
请勿在您的第一个finish()
中致电Activity
。然后,当用户按下“后退”按钮时,第二个Activity
将被关闭并从堆栈中取出,并且将调用第一个onResum()
的{{1}}。
Activity
就崩溃而言,您需要提供logcat以及可能更多的代码
您可能希望阅读有关the Stack的内容,这将有助于了解 Intent in = new Intent(MainActivity.this, settingmenu.class);
startActivity(in);
setResult(Activity.RESULT_OK);
// finish(); don't call this and the Activity will remain on the stack
如何放置和弹出。此外,还有一个非常好的话题,我相信Romain Guy在一个较旧的Google I / O会议上就此问题非常有帮助。我会尝试发布,但你可以谷歌这些条款,你会发现它。
Google I/O Navigation and stack不是我认为的那样,但绝对值得一看。
答案 1 :(得分:0)
当你使用“完成”时,你只是破坏活动而它不会在堆栈中,如果你想要去往前一个活动,你需要使用另一个意图来开始活动,或者不要使用“完成” “意图之后。
答案 2 :(得分:0)
为了解决我的问题,我摆脱了android:onClick =“save()”,而在我的第二个活动中在onCreate方法中创建了一个onclicklistener。测试它,它工作。
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
this.requestWindowFeature(Window.FEATURE_NO_TITLE);
setContentView(R.layout.settingmenu);
Button tt = (Button)findViewById(R.id.savebutton);
tt.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
finish();
}
});
答案 3 :(得分:0)
btnBack.setOnClickListener(new OnClickListener(){private void onClick(){
Intent intent = new Intent(currentActivity.this, Main.class);
intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
startActivity(intent);}});