我正在开发一款Android应用,并尝试在操作栏按钮和默认的Android后退按钮上实现向上导航。我需要让它返回上一个活动,但它只是关闭应用程序。
我在这里阅读了设计指南http://developer.android.com/design/patterns/navigation.html 以及http://developer.android.com/training/implementing-navigation/ancestral.html的实施内容,但我仍然遇到问题。
这是我的代码:
我的MapActivity调用对话框片段:
public void showProfileDialog() {
// Create an instance of the dialog fragment and show it
ProfileDialogFragment profileDialog = new ProfileDialogFragment();
profileDialog.show(getSupportFragmentManager(), "ProfileDialogFragment");
}
在这里:
public class ProfileDialogFragment extends DialogFragment {
protected FragmentActivity context;
@Override
public Dialog onCreateDialog(Bundle savedInstanceState) {
LayoutInflater inflater = getActivity().getLayoutInflater();
AlertDialog.Builder builder = new AlertDialog.Builder(getActivity());
builder.setView(inflater.inflate(R.layout.dialog_profile, null));
builder.setMessage(R.string.profileName)
.setPositiveButton(R.string.profileButtonTextEdit, new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int id) {
//go to profile page
context = getActivity();
Intent i = new Intent(context,ProfilePageActivity.class);
i.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
//i.putExtra("key", "value"); //Optional parameters
context.startActivity(i);
context.finish();
}
})
.setNegativeButton(R.string.profileButtonTextClose, new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int id) {
//effectivly a cancel button
ProfileDialogFragment.this.getDialog().cancel();
}
});
// Create the AlertDialog object and return it
return builder.create();
}
}
,这会调用个人资料页面:
public class ProfilePageActivity extends FragmentActivity {
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.profile_screen);
getActionBar().setDisplayHomeAsUpEnabled(true); // make up navigation
final Button btnSave = (Button) findViewById(R.id.btnSave);
btnSave.setOnClickListener(new View.OnClickListener() {
public void onClick(View v) {
// Perform action on click
}
});
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
switch (item.getItemId()) {
case android.R.id.home:
NavUtils.navigateUpFromSameTask(this);
return true;
}
return false;
}
}
并在清单中指定父活动:
<activity
android:name="com.wc.test.ProfilePageActivity"
android:label="@string/app_name"
android:parentActivityName="com.wc.test.MyMapActivity">
<!-- The meta-data element is needed for versions lower than 4.1 -->
<meta-data
android:name="android.support.PARENT_ACTIVITY"
android:value="com.wc.test.MyMapActivity" />
</activity>
这表明配置文件页面应该返回主活动,而是关闭应用程序。
我想这可能是因为我要去&#34;经过&#34;片段对话框,但我不确定如何解决它。
答案 0 :(得分:0)
最后在代码中挖掘了几年之后,我发现应用程序退出的原因是由对话框片段中的一行引起的:
context.finish();