如何将对话框中的参数值传递给android中的活动?

时间:2012-11-23 22:31:37

标签: android alertdialog dialog

我有一个活动(主要),我在其中插入了一个按钮。 当用户按下按钮时,会出现一个带有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”没有价值。

3 个答案:

答案 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函数,您可以使用您的函数来更改可见性