2017-05-08 50 views
0

之間的轉換我有這樣的代碼:如何surpress AlertDialog再次表明,當返回鍵被按下(activitiesú

// To open Recog, new activity 
public void openRecog(View view) { 

    Intent intent = new Intent(MainMenuActivity.this,FunctionActivity.class); 
    startActivity(intent); 


     // WARNING 
     AlertDialog.Builder builder = new AlertDialog.Builder(this); 
     builder.setTitle(R.string.warningTitle) 
       .setMessage(R.string.warningRecogMessage) 
       .setCancelable(false) 
       .setPositiveButton(R.string.warningMessageAccept, new DialogInterface.OnClickListener() { 
        public void onClick(DialogInterface dialog, int id) { 
         dialog.dismiss(); 

        } 

       }); 
     AlertDialog alert = builder.create(); 
     alert.show(); 


} 

應該基本上表現出一定的警告時MainMenuActivity按鈕被按下,FunctionActivity啓動前問題是唯一的方法從FunctionActivity返回到MainMenuActivity是回擊鍵,這再次顯示警告。有沒有辦法抑制警告顯示當按下回車鍵?我找不出任何東西...謝謝

+0

你是否在後退按鈕被按下時調用它? 「surpress再次顯示」是什麼意思? – Kaushal28

+0

不是,用戶在菜單中點擊ImageButton時會調用這個函數。然後顯示警告並開始另一項活動。但是,用戶必須點擊android後退按鈕返回到菜單活動。問題在於該轉換中顯示了警告,我希望它只是返回到菜單而不再顯示警報。 – bazinac

+0

ohkay,所以當你回來的時候,問題再次顯示是正確的? – Kaushal28

回答

1

我發現那個問題是因爲對話框是異步的,它並沒有解僱。因此,我創建了這樣的聽衆

public class DialogOnClickListener implements DialogInterface.OnClickListener{ 
    @Override 
    public void onClick(DialogInterface dialog, int which) { 
     dialog.dismiss(); 

     Intent intent = new Intent(MainMenuActivity.this,ClassifierActivity.class); 
     startActivity(intent); 
    } 
} 

這是一個開始活動後立即解僱完成。無論如何,感謝@ Kaushal28爲他的時間和願意提供幫助。祝你有美好的一天,先生:)。

+0

不錯的觀察。加上一個。 – Kaushal28

0

你可以在這裏做一個技巧。覆蓋第二個acti的onBackPressed()方法如下所示:

@Override 
public void onBackPressed() { 

    finish(); 
    Intent intent = new Intent(YOUR_SECOND_ACTIVITY.this, YOUR_FIRSTACTIVITY.class); 
    intent.putExtra("checker", true); 
    startActivity(intent); 
} 

所以,你基本上是通過布爾值來表明你是通過按回來的第一個活動。因此,在第一個活動,你必須接受的onResume方法布爾,當你創建的對話,首先是真還是假檢查這個布爾,像這樣:

public boolean checker = false; 
... 
@Override 
public void onResume(){ 
    super.onResume(); 
    // put your code here... 
    checker = getIntent().getBooleanExtra("checker"); //this should be same as you given in 2nd activity 
} 

所以,如果布爾值是假的,你是安全的打開我們的警告,像這樣:

if(!checker){ 
    //warning code... 
} else { 
    //Do nothing because you are coming from 2nd activity. 
} 
+0

謝謝,這可能會做的伎倆,但問題是,FirstActivity可以從很多其他活動恢復 - 所以這似乎不是可行的選項... – bazinac

+1

這不會導致問題,因爲你從單個活動發送布爾值。所以當其他活動恢復時,布爾值不會被更新。 – Kaushal28

+1

好,所以你說你必須在每個活動中添加這段代碼...然後是這個訣竅,長代碼將是問題。 – Kaushal28

相關問題