繁体   English   中英

清除堆栈上的活动不起作用

[英]Clearing activities on stack not working

我很难从片段中清除堆栈上的活动。 这是我到目前为止所做的,我有3个活动,即:login,main和profile。 第一个活动是登录。 如果成功,该应用程序将进入主要活动。 在主要活动中,我有一个按钮进入个人资料活动。

LogoutAlertDialog.class

   @Override
 public Dialog onCreateDialog(Bundle savedInstanceState) {

  OnClickListener positiveClick = new OnClickListener() {   
   @Override
   public void onClick(DialogInterface dialog, int which) {    

       Toast.makeText(getActivity().getBaseContext(), 
                "Logging out...", Toast.LENGTH_SHORT).show();



       Intent i = new Intent(getActivity(), Login.class);
       i.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP); 
       startActivity(i);
                getActivity().finish();


   }
  };

  OnClickListener negativeClick = new OnClickListener() {   
   @Override
   public void onClick(DialogInterface dialog, int which) {


   }
  };

  AlertDialog.Builder builder = new AlertDialog.Builder(getActivity());
  builder.setMessage("Are you sure you want to logout?");
  builder.setNegativeButton("No", negativeClick);
  builder.setPositiveButton("Yes", positiveClick);
  builder.setIcon(R.drawable.logout);
  builder.setTitle("Logout");
  Dialog dialog = builder.create();
  return dialog;
 }

Profile.class:

/**
 * On selecting action bar icons
 * */
@Override
public boolean onOptionsItemSelected(MenuItem item) {
    // Take appropriate action for each action item click
    switch (item.getItemId()) {
    case R.id.action_logout:
        edit = shared.edit();

        edit.putString("Username", "");
        edit.putString("isLoggedIn", "no");
        edit.commit();

        FragmentManager fm = getFragmentManager();
        LogoutAlertDialog alert = new LogoutAlertDialog();
        alert.show(fm, "");



        return true;
    default:
        return super.onOptionsItemSelected(item);
    }
}

@Override
public boolean onCreateOptionsMenu(Menu menu) {
    // TODO Auto-generated method stub
    MenuInflater inflater = getMenuInflater();
    inflater.inflate(R.menu.activity_main_actions, menu);
    return super.onCreateOptionsMenu(menu);
}

但是当我尝试这个时,应用程序转到了我的Login.class - Activity但是当我点击后退按钮时,它又回到了主要活动。

有人知道我的代码有什么问题吗? 非常感谢任何帮助。 谢谢。

更新:

我已经设定了这个:

<activity
        android:name="com.example.sample.Profile"
        android:label="@string/myprofile"
        android:parentActivityName="com.example.sample.MainActivity" >
        <intent-filter>
            <action android:name="android.intent.action.MAIN" />

            <category android:name="android.intent.category.DEFAULT" />
        </intent-filter>
    </activity>

在我的AndroidManifest中,因为我正在使用ActionBar,它允许用户返回其父活动。 这有问题吗?

用这个

i.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
i.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TASK);
i.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM