我有一个活动(主要),我在其中插入了一个按钮。 当用户按下按钮时,会出现一个带有2个收音机框的对话框。我想根据选择的radiobutton将“1”或“0”值设置为“ntv”,然后在Main活动中使用“ntv”值,但似乎这不会将“ntv”值传递给Main活动,我的代码出了什么问题?
final CharSequence[] chan = {"Minutes", "Seconds"}; builder = new AlertDialog.Builder(Main.this); builder.setTitle("Please Select:"); builder.setSingleChoiceItems(chan, 0, new DialogInterface.OnClickListener() { public void onClick(DialogInterface dialog, int item) { if(chan[item]=="Minutes") { Toast.makeText(getApplicationContext(), "Minutes", Toast.LENGTH_SHORT).show(); ntv="1"; } else if (chan[item]=="Seconds") { Toast.makeText(getApplicationContext(), "Seconds", Toast.LENGTH_SHORT).show(); ntv="0"; } } }); AlertDialog alert = builder.create(); alert.show();
我将“ntv”定义为字符串,当比较“ntv”时,这是代码的一部分,以检查它是“0”还是“1”
ImageView set1= (ImageView) findViewById(R.id.set1); ImageView set2= (ImageView) findViewById(R.id.set2); if (ntv.equals("0")) { set1.setVisibility(View.INVISIBLE); } if (ntv.equals("1")) { set2.setVisibility(View.INVISIBLE); }
并且因为(set1)和(set2)都不会不可见,我意识到“ntv”没有价值。
答案 0 :(得分:1)
你应该对字符串比较NOT .equals
==
由于这个原因,你的if语句不太可能触发。
if(chan[item].equals("Minutes"))
{
Toast.makeText(getApplicationContext(), "Minutes", Toast.LENGTH_SHORT).show();
ntv="1";
}
else if (chan[item].equals("Seconds"))
{
Toast.makeText(getApplicationContext(), "Seconds", Toast.LENGTH_SHORT).show();
ntv="0";
}
答案 1 :(得分:1)
这一切看起来都不错(除了建议使用equals()
而不是==
进行字符串比较,但是,正如你所说,它确实有用(它只是不好的做法)。 / p>
我唯一能想到的(没有看到所有代码)是变量ntv
的范围是错误的。你是否在方法中声明了变量?它需要在您的类中定义为实例变量(即:不在方法中)。
答案 2 :(得分:0)
您不清楚使用的完整代码以及如何调用更改可见性的代码。下面是一个例子
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
AlertDialog.Builder builder;
final CharSequence[] chan = {"Minutes", "Seconds"};
builder = new AlertDialog.Builder(MainActivity.this);
builder.setTitle("Please Select:");
builder.setSingleChoiceItems(chan, 0, new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int item) {
if(chan[item].equals("Minutes")) {
showToast("Minutes");
} else if (chan[item].equals("Seconds")) {
showToast("Seconds");
}
}
});
AlertDialog alert = builder.create();
alert.show();
}
private void showToast(String s){
Toast.makeText(getApplicationContext(), s, Toast.LENGTH_SHORT).show();
}
而不是showToast函数,您可以使用您的函数来更改可见性