android中带有switch语句的AlertDialog

android中带有switch语句的AlertDialog,android,switch-statement,android-alertdialog,Android,Switch Statement,Android Alertdialog,我正准备第一次为我的客户制作一个android应用程序。他需要在应用程序中实现多种语言。因此,我放置了一些相关的布局,单击时,它将被更改为特定的语言。但是现在,我想放一个“警报对话框”来确认选择。为此,我制作了一个警报框,并在肯定按钮中实现了一个switch语句。但是,它不工作,我没有任何错误。:(这是我的代码: rl_german.setOnClickListener(new OnClickListener() { @Override public void onClick(V

我正准备第一次为我的客户制作一个android应用程序。他需要在应用程序中实现多种语言。因此,我放置了一些相关的布局,单击时,它将被更改为特定的语言。但是现在,我想放一个“警报对话框”来确认选择。为此,我制作了一个警报框,并在肯定按钮中实现了一个switch语句。但是,它不工作,我没有任何错误。:(这是我的代码:

rl_german.setOnClickListener(new OnClickListener() {
    @Override
    public void onClick(View v) {
        AlertDialog();; 

    }
});
rl_english.setOnClickListener(new OnClickListener() {

    @Override
    public void onClick(View v) {

    AlertDialog();

    }
});
  }

 private void AlertDialog()
   {
        new AlertDialog.Builder(this)
        .setTitle("")
        .setMessage("Are you sure you want to change the language?")
        .setPositiveButton("Yes", new DialogInterface.OnClickListener() {

 public void onClick(DialogInterface dialog, int which) { 
        switch(which){
        case R.id.rl_english:
            startActivity(new Intent(Language.this,HomeActivity2.class));   
        break;
        case R.id.rl_german:

        break;
        case R.id.rl_french:

        break;
    }
    }
 })
.setNegativeButton("No", new DialogInterface.OnClickListener() {
    public void onClick(DialogInterface dialog, int which) { 
        // do nothing
    }
 })
 .show();
} 

但是,如果我在我的“OnClick”方法中直接调用“startActivity”,它工作得很好。有人能帮我吗?提前谢谢:)

这里的问题是
它是指
AllertDialog.Builder中单击的
按钮的
id
(例如,
按钮正
按钮负

您可以做的是将
Intent
变量作为成员变量(在方法外部声明),然后使用该变量作为参数调用
startActivity()

public class MyActivity extends Activity
{
     Intent i;

     public void onCreate(...)
     {
         ...
         rl_english.setOnClickListener(new OnClickListener() {
         @Override
         public void onClick(View v) {
         i = new Intent(Language.this,HomeActivity2.class);
         AlertDialog();
      }

 private void AlertDialog()
{
    new AlertDialog.Builder(this)
    .setTitle("")
    .setMessage("Are you sure you want to change the language?")
    .setPositiveButton("Yes", new DialogInterface.OnClickListener() {
      public void onClick(DialogInterface dialog, int which) { 
        startActivity(i));
}

这是一个未经测试的快速代码,因此您可能需要根据自己的需要进行调整,添加额外的代码和括号等。问题是,您试图将
哪个
与在
活动中单击的
按钮
进行比较,但实际上这是指在
警报对话框中单击的
按钮根据单击了哪个
Acitvity按钮
来确定
意图
,然后如果单击了
警报对话框中的肯定
按钮
,则启动
活动
,如果单击了否定
按钮
,则取消。

我想,问题是,您的开关是基于“which”工作的参数来自onClick(DialogInterface dialog,int-which),但您正在用“R.id.rl_-english”检查它。您的任何情况都不符合条件,因为“which”使按钮单击时没有任何视图的id。

首先关闭对话框,然后启动新活动…而不是语言。使用getApplicationContext()让我知道。这不是工作中的朋友:(看我的答案。你在与错误的
id
进行比较。谢谢你,我亲爱的朋友。)事实上,我对这个问题有点紧张。因为,我不知道如何解决这个问题。你救了我…)谢谢!!