0

我正在尝试在警报对话框中显示带有 2 个按钮的单选组。

我在列表项单击时动态创建对话框和警报。

除了每次显示警报时单选按钮 ID 都会增加(如果我点击取消然后重新单击列表项)之外,它工作正常。

顺便说一句,有没有比创建临时最终变量更好的方法来引用广播组?

// List item clicked
@Override
public void onItemClick(AdapterView<?> oAdapterView, View oView, int iPos, long lArg)
{
    ListView oListView = (ListView) findViewById(R.id.usage_room_list_lv);
    String strClickedItem = (String) oListView.getItemAtPosition(iPos);


    AlertDialog.Builder oAlert = new AlertDialog.Builder(this);

    oAlert.setTitle("Alert Title");
    oAlert.setMessage("Alert Message");
    oAlert.setNegativeButton(getResources().getString(R.string.cancel).toString(), null);

    RadioGroup oGroup = new RadioGroup(this);

    RadioButton oFirstButton = new RadioButton(this);
    oFirstButton.setText("First Button");

    RadioButton oSecondButton = new RadioButton(this);
    oSecondButton .setText("Second Button");

    oGroup.addView(oSecondButton);
    oGroup.addView(oAccessibleChoice);

    // Required for inside setPositiveButton below, is there a better way?
    final RadioGroup oTmpGroup = oGroup;
    oAlert.setView(oTmpGroup);

    oAlert.setPositiveButton("Done", new DialogInterface.OnClickListener() {

        @Override
        public void onClick(DialogInterface dialog, int which)
        {
                            // This auto increments
            if (DEBUG) System.out.println(CLASS_NAME + " Clicked option: " + oTmpGroup.getCheckedRadioButtonId());
        }
    });

    oAlert.show();
}
4

1 回答 1

0

大多数 View 实现的 ID 都会自动递增,因为它是在构造函数中指定的。为了克服这个问题,您可以使用setId(int)方法重新定义任何 View 子类的 id。

对“更好”一无所知。你想要什么——更好的可读性、更短的代码或更快的执行时间?您的解决方案已经很好,可以快速访问存储在变量中的引用,并且不会弄乱属性列表。不过,我不明白如果您在其范围内不更改 original 的值,为什么要创建新的 final 变量。

于 2014-03-09T09:39:46.570 回答