2014-02-19 49 views
0

我在清理堆棧中的活動時遇到困難。這是我迄今爲止所做的,我有3個活動,即:登錄,主要和配置文件。第一項活動是登錄。如果成功,該應用將轉到主要活動。在主要活動內部,我有一個按鈕可用於配置文件活動。清除堆棧不能正常工作的活動

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 - 活動,但是當我點擊後退按鈕,這是回到主要活動。

有人知道我的代碼有什麼問題嗎?非常感謝任何幫助。謝謝。

UPDATE:

我已經將這個活動:

<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,因爲我使用的是動作條,它可以讓用戶返回到它的父活動。這有什麼問題嗎? 。

+0

一個固定電話'getActivity()結束();''開始活動Login' @ –

+0

後ρяσѕρєяK我試圖這樣做,還是一樣 – Dunkey

+0

只是刪除addflag行..然後在開始活動後完成().. – Ranjit

回答

2

使用此

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

我仍然有同樣的問題 – Dunkey

+0

它錯誤地檢查我編輯的答案。 – Palak

+0

謝謝這對我有用! :) – Dunkey