0

我有一个活动(主要),并在其中插入了一个按钮。当用户按下按钮时,会出现一个带有 2 个单选框的对话框。我想根据选择的单选按钮将“1”或“0”值设置为“ntv”,然后在主活动中使用“ntv”值,但这似乎不会将“ntv”值转移到主活动,我的代码有什么问题?

      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”没有价值。

4

3 回答 3

1

你应该做.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";
            }
于 2012-11-23T22:35:37.833 回答
1

这一切看起来都不错(除了使用equals()而不是==字符串比较的建议,尽管正如您所说,它确实有效(这不是一个好习惯)。

我唯一能想到的(没有看到所有代码)是变量的范围ntv是错误的。您是否在方法中声明了变量?它需要在您的类中定义为实例变量(即:不在方法中)。

于 2012-11-24T21:34:10.137 回答
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 函数,您可以使用您的函数来更改可见性

于 2012-11-23T23:32:58.057 回答