无线电组

时间:2015-11-07 07:42:46

标签: java android radio-button popupwindow

我正在尝试在活动中创建一个弹出窗口。当我们单击活动中的按钮时,弹出窗口会显示。弹出窗口的布局是显示一个包含4个单选按钮,一个按钮和一个搜索栏的无线电组,并且当按下弹出窗口中的按钮时,必须根据所选的单选按钮将值返回到主活动。 / p>

当我运行应用程序并打开弹出窗口时,它给出了我们这个错误: “java.lang.NullPointerException:尝试在空对象引用上调用虚方法'void android.widget.RadioGroup.setOnCheckedChangeListener(android.widget.RadioGroup $ OnCheckedChangeListener)'”

我的主要活动的代码是:

public class CustomMenuActivity extends Activity
{

String ingredientName;
String ingredientQuantity;
private PopupWindow pw;
Button setQuantity;

@Override
protected void onCreate(Bundle savedInstanceState)
{
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_custom_menu);

    setQuantity = (Button) findViewById(R.id.btnSetQty);

    setQuantity.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v)
        {
            initiatePopupWindow();
        }
    });

}

private void initiatePopupWindow()
{

    try {
        //We need to get the instance of the LayoutInflater, use the context of this activity
        LayoutInflater inflater = (LayoutInflater) CustomMenuActivity.this
                .getSystemService(Context.LAYOUT_INFLATER_SERVICE);
        //Inflate the view from a predefined XML layout
        View layout = inflater.inflate(R.layout.set_quantity_popup,
                (ViewGroup) findViewById(R.id.popupElementid));
        // create a 600px width and 570px height PopupWindow
        pw = new PopupWindow(layout, 600, 570, true);
        // display the popup in the center
        pw.showAtLocation(layout, Gravity.CENTER, 0, 0);

        RadioGroup radioGroup;

        radioGroup = (RadioGroup) findViewById(R.id.radioGroupid);

        final String[] tempQtyVar = new String[1];


        radioGroup.setOnCheckedChangeListener(new RadioGroup.OnCheckedChangeListener() {
            @Override
            public void onCheckedChanged(RadioGroup group, int checkedId) {
                switch (checkedId){
                    case R.id.rbqty30id:
                        tempQtyVar[0] = "30";
                        break;
                    case R.id.rbqty60id:
                        tempQtyVar[0] = "60";
                        break;
                    case R.id.rbqty90id:
                        tempQtyVar[0] = "90";
                        break;
                    case R.id.rbqtycutomid:
                        tempQtyVar[0] = "120";
                        break;
                }
            }
        });

        Button setQtyBtn = (Button) layout.findViewById(R.id.buttonOkSetQtyid);
        setQtyBtn.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                ingredientQuantity = tempQtyVar[0];
                Toast.makeText(getApplicationContext(),ingredientQuantity,Toast.LENGTH_LONG).show();
                pw.dismiss();
            }
        });

    } catch (Exception e) {
        e.printStackTrace();
    }
}


}

弹出窗口的layout.xml是:

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="wrap_content" android:layout_height="wrap_content"
    android:background="#fd050505"
    android:padding="30dp"
    android:id="@+id/popupElementid">
    <RelativeLayout
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_centerHorizontal="true"
        android:layout_centerVertical="true"
        android:id="@+id/relativeLayout">
        <TextView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="SET QUANTITY"
            android:textColor="#84e9e6"
            android:textSize="20sp"
            android:layout_centerHorizontal="true"
            android:layout_marginTop="20dp"
            android:textStyle="bold"
            android:id="@+id/popupTitleid"/>
        <LinearLayout
            android:layout_width="600dp"
            android:layout_height="wrap_content"
            android:layout_below="@+id/popupTitleid"
            android:orientation="horizontal"
            android:background="@drawable/btn_rounded_boarder"
            android:layout_centerHorizontal="true"
            android:layout_marginTop="20dp">
            <RadioGroup
                android:layout_width="fill_parent"
                android:layout_height="wrap_content"
                android:id="@+id/radioGroupid"
                android:layout_marginTop="20dp"
                android:layout_marginBottom="20dp"
                android:orientation="horizontal"
                >
                <RadioButton
                    android:layout_width="0dp"
                    android:layout_height="wrap_content"
                    android:layout_weight="1"
                    android:text=" 30ml "
                    android:textColor="#84e9e6"
                    android:id="@+id/rbqty30id"
                    android:checked="true" />
                <RadioButton
                    android:layout_width="0dp"
                    android:layout_height="wrap_content"
                    android:layout_weight="1"
                    android:textColor="#84e9e6"
                    android:text=" 60ml "
                    android:id="@+id/rbqty60id" />
                <RadioButton
                    android:layout_width="0dp"
                    android:layout_height="wrap_content"
                    android:layout_weight="1"
                    android:textColor="#84e9e6"
                    android:text=" 90ml "
                    android:id="@+id/rbqty90id" />
                <RadioButton
                    android:layout_width="0dp"
                    android:layout_height="wrap_content"
                    android:layout_weight="1"
                    android:textColor="#84e9e6"
                    android:text=" Custom Value "
                    android:id="@+id/rbqtycutomid"
                    />
            </RadioGroup>
        </LinearLayout>
        <LinearLayout
            android:layout_width="600dp"
            android:layout_height="wrap_content"
            android:layout_marginTop="50dp"
            android:layout_centerHorizontal="true">
            <SeekBar
                android:id="@+id/customqtySBid"
                android:layout_height="fill_parent"
                android:layout_width="600dp"
                android:textColor="#84e9e6"
                android:layout_marginLeft="30dp"
                android:layout_marginRight="30dp"
                android:layout_marginTop="150dp"
                android:paddingBottom="10dp"/>
        </LinearLayout>
        <LinearLayout
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_marginTop="20dp"
            android:layout_centerHorizontal="true">
            <Button
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:id="@+id/buttonOkSetQtyid"
                android:textColor="#84e9e6"
                android:text="OK"
                android:background="@drawable/btn_rounded_boarder"
                android:layout_marginTop="275dp"/>
        </LinearLayout>

    </RelativeLayout>
</RelativeLayout>

我尝试在线寻找答案,但并没有找到特定于我的问题的解决方案。请建议任何解决方案。 提前致谢。

1 个答案:

答案 0 :(得分:1)

你似乎在夸大错误的布局。在

中更改正确的layout.xml
setContentView(R.layout.activity_custom_menu);