android中带有switch语句的AlertDialog
我正准备第一次为我的客户制作一个android应用程序。他需要在应用程序中实现多种语言。因此,我放置了一些相关的布局,单击时,它将被更改为特定的语言。但是现在,我想放一个“警报对话框”来确认选择。为此,我制作了一个警报框,并在肯定按钮中实现了一个switch语句。但是,它不工作,我没有任何错误。:(这是我的代码: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
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
进行比较。谢谢你,我亲爱的朋友。)事实上,我对这个问题有点紧张。因为,我不知道如何解决这个问题。你救了我…)谢谢!!