2017-05-08 51 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

相关问题