Zap*_*ica 134 android android-activity
我有一个主要的活动,当我点击一个按钮,开始一个新的活动,我使用以下代码来做到这一点:
Intent intent = new Intent(this, SettingsActivity.class);
startActivity(intent);
Run Code Online (Sandbox Code Playgroud)
上面的代码是从主要活动运行的.
现在,在我的主要活动调用的新活动中,我有一个后退按钮.当我点击这个后退按钮时,我希望我的新活动关闭,它必须返回到原始的主要活动.
我已经尝试过调用super.finish()而且只是finish() (来自新活动),但这会关闭我的整个应用程序(包括我的主要活动).
如何关闭当前焦点的活动,然后返回主活动?
EDITED
我的手机的后退按钮也关闭了我的整个应用程序的事实,让我认为我已经错误地启动了第二个活动?
好的,我一直在寻找,
我创建了一个设置活动,它使用相同的清单代码和相同的代码来启动活动.
对于按下后退按钮时的设置活动,它将返回主活动.
通过上面在主要问题中提到的活动,它只是退出我的整个应用程序.
所以问题似乎不是完成活动的代码,而是活动本身.
Aja*_*y S 190
我认为你在开始之前就是在调用finish()方法.MainActivitySettingsActivity
您描述的方案将以下列两种方式发生:
无论是
您已设置android:noHistory = "true"为MainActivity内AndroidManifest.xml导致MainActivity到finish上按返回键自动.
要么
在切换到"SettingsActivity"之前,你已经打电话给finish()你MainActivity,这会杀死它.当您按下后退按钮时,由于没有预设堆叠中的其他活动以弹出,它将返回主屏幕.
jjN*_*ord 56
您可以通过在您所在的活动中调用finish()来返回上一个活动.注意finish()调用之后的任何代码都会运行 - 你可以在调用finish()之后再做一次返回来修复它.
如果要将结果返回到活动1,那么在启动活动2时,您需要:
startActivityForResults(myIntent, MY_REQUEST_CODE);
Run Code Online (Sandbox Code Playgroud)
在被调用的活动中,您可以从onCreate()参数获取Intent或使用它
getIntent();
Run Code Online (Sandbox Code Playgroud)
要将结果设置为活动1,然后在活动2中设置
setResult(Activity.RESULT_OK, MyIntentToReturn);
Run Code Online (Sandbox Code Playgroud)
如果你无意返回,那就说吧
setResult(Activity.RESULT_OK);
Run Code Online (Sandbox Code Playgroud)
如果活动结果不佳,您可以使用Activity.RESULT_CANCELED(默认情况下使用).然后在活动一中你做
onActivityResult(int requestCode, int resultCode, Intent data) {
// Handle the logic for the requestCode, resultCode and data returned...
}
Run Code Online (Sandbox Code Playgroud)
要完成活动2,请使用与上述finish()相同的方法,并已设置结果.
小智 10
如果你使用片段你应该使用
getActivity().onBackPressed();
Run Code Online (Sandbox Code Playgroud)
如果您使用单一活动,您可以使用
finish();
Run Code Online (Sandbox Code Playgroud)
我相信您的第二项活动可能与您作为儿童活动的主要活动无关。检查您的AndroidManifest.xml文件,看看<activity>您的子活动的条目是否包含android:parentActivityName属性。它应该是这样的:
<?xml ...?>
...
<activity
android:name=".MainActivity"
...>
</activity>
<activity
android:name=".ChildActivity"
android:parentActivityName=".MainActivity"
...>
</activity>
...
Run Code Online (Sandbox Code Playgroud)
Button edit = (Button) view.findViewById(R.id.yourButton);
edit.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View view) {
Intent intent = new Intent(this, YourMainActivity.class);
startActivity(intent);
finish();
}
});
Run Code Online (Sandbox Code Playgroud)
这将关闭整个应用程序:
this.finish();
Run Code Online (Sandbox Code Playgroud)
小智 6
尝试此代码而不是finish:
onBackPressed();
| 归档时间: |
|
| 查看次数: |
385684 次 |
| 最近记录: |