java - radio 组上的空指针异常

标签 java android radio-button popupwindow

我正在尝试在 Activity 中制作一个弹出窗口。当我们点击 Activity 中的按钮时,弹出窗口就会出现。弹出窗口的布局是显示一个单选组,其中包含 4 个单选按钮、一个按钮和一个搜索栏,当按下弹出窗口中的按钮时,必须根据选定的单选按钮向主 Activity 返回一个值。

当我运行应用程序并打开弹出窗口时,出现以下错误: “java.lang.NullPointerException:尝试在空对象引用上调用虚方法‘void android.widget.RadioGroup.setOnCheckedChangeListener(android.widget.RadioGroup$OnCheckedChangeListener)’”

我的主要 Activity 代码是:

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>

我试着在网上寻找答案,但没有真正找到针对我的问题的解决方案。请提出任何解决方案。 提前致谢。

最佳答案

您似乎膨胀了错误的布局。在

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

关于java - radio 组上的空指针异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33580449/

相关文章:

java - 循环嵌套列表 RxJava2

java - 创建名为 defaultServletHandlerMapping 的 bean 时出错

jquery - 事件时将背景设置为单选按钮

java - 将列表作为可变参数传递

php - 单选按钮名称属性可以有数值吗

c# - 如何使 RadioButton 文本和附加标签保持对齐?

java - 使用 Postconstruct 方法在应用程序范围类中注入(inject)请求范围 bean 时出现上下文不活动异常

java - 如何在eclipse中自动添加一个新文件到SVN

java - Java中将多个Byte[]添加到一个数组中

android - 是否有相当于 "Android Localization Files Editor"的 android-studio?