简体   繁体   English

尝试在空对象引用上调用虚拟方法“void android.widget.RadioGroup.addView(android.view.View)”

[英]Attempt to invoke virtual method 'void android.widget.RadioGroup.addView(android.view.View)' on a null object reference

I am a beginner in android and i using java language not Kotlin.我是 android 的初学者,我使用的是 java 语言而不是 Kotlin。 Basically i am showing a custom alert dialog after button press, inside an alert dialog there is two radio buttons.基本上我在按钮按下后显示一个自定义警报对话框,在警报对话框中有两个单选按钮。 But problem is after clicking a button in order to show the custom dialog it gets crashed showing null point exception.但问题是在单击按钮以显示自定义对话框后,它会崩溃并显示空点异常。 Below is the code and log.下面是代码和日志。

CustomDialog.java自定义对话框

public class CustomDialog extends AppCompatDialogFragment {
    @Override
    public Dialog onCreateDialog(Bundle savedInstanceState) {
        AlertDialog.Builder builder=new AlertDialog.Builder(getActivity());
        LayoutInflater layoutInflater=getActivity().getLayoutInflater();
        View view=layoutInflater.inflate(R.layout.custom_dialog,null);
        builder.setView(view)
                .setTitle("Check Methods");
        final int[] num=getResources().getIntArray(R.array.methods);
        RadioButton radioButton=new RadioButton(getActivity());
        RadioButton radioButton1=new RadioButton(getActivity());
        radioButton.setText("A");
        RadioGroup radioGroup=getActivity().findViewById(R.id.radioGroup);
        radioButton.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                int kk=num[0];
                int aa=kk;
            }
        });
        radioButton1.setText("B");
        radioGroup.addView(radioButton); //In this line it is showing null point exception and in debugging it is showing "radioGroup" is null
        radioGroup.addView(radioButton1);
        return builder.create();
    }
}

custom_dialog.xml custom_dialog.xml

<LinearLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="vertical"
    android:layout_width="match_parent"
    android:layout_height="match_parent">
    <RadioGroup
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:id="@+id/radioGroup"/>
</LinearLayout>

methods.xml方法文件

<resources>
    <integer-array name="methods">
        <item>0</item>
    </integer-array>
</resources>

MainActivity.Java主Activity.Java

btnMethod.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                openDialog(); //to show custom dialog after button press
}}

private void openDialog() {
    CustomDialog customDialog=new CustomDialog();
    customDialog.show(getSupportFragmentManager(),"Custom Dialog");
}

Logs日志

java.lang.NullPointerException: Attempt to invoke virtual method 'void android.widget.RadioGroup.addView(android.view.View)' on a null object reference at com.nabil.myapplication.CustomDialog.onCreateDialog(CustomDialog.java:33) at android.support.v4.app.DialogFragment.onGetLayoutInflater(DialogFragment.java:330) at android.support.v4.app.Fragment.performGetLayoutInflater(Fragment.java:1308) at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:1460) at android.support.v4.app.FragmentManagerImpl.moveFragmentToExpectedState(FragmentManager.java:1784) at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:1852) at android.support.v4.app.BackStackRecord.executeOps(BackStackRecord.java:802) at android.support.v4.app.FragmentManagerImpl.executeOps(FragmentManager.java:2625) at android.support.v4.app.FragmentManagerImpl.executeOpsTogether(FragmentManager.java:2411) at android.support.v4.app.FragmentManagerImpl.removeRedundantOperationsAndExecu java.lang.NullPointerException:尝试在 com.nabil.myapplication.CustomDialog.onCreateDialog(CustomDialog.java:33) 的空对象引用上调用虚拟方法“void android.widget.RadioGroup.addView(android.view.View)”在 android.support.v4.app.DialogFragment.onGetLayoutInflater(DialogFragment.java:330) 在 android.support.v4.app.Fragment.performGetLayoutInflater(Fragment.java:1308) 在 android.support.v4.app.FragmentManagerImpl.moveToState (FragmentManager.java:1460) at android.support.v4.app.FragmentManagerImpl.moveFragmentToExpectedState(FragmentManager.java:1784) at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:1852) at android.support. v4.app.BackStackRecord.executeOps(BackStackRecord.java:802) at android.support.v4.app.FragmentManagerImpl.executeOps(FragmentManager.java:2625) at android.support.v4.app.FragmentManagerImpl.executeOpsTogether(FragmentManager.java:第2411章) te(FragmentManager.java:2366) at android.support.v4.app.FragmentManagerImpl.execPendingActions(FragmentManager.java:2273) at android.support.v4.app.FragmentManagerImpl$1.run(FragmentManager.java:733) at android.os.Handler.handleCallback(Handler.java:907) at android.os.Handler.dispatchMessage(Handler.java:105) at android.os.Looper.loop(Looper.java:216) at android.app.ActivityThread.main(ActivityThread.java:7625) at java.lang.reflect.Method.invoke(Native Method) at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:524) at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:987) te(FragmentManager.java:2366) at android.support.v4.app.FragmentManagerImpl.execPendingActions(FragmentManager.java:2273) at android.support.v4.app.FragmentManagerImpl$1.run(FragmentManager.java:733) at android。 os.Handler.handleCallback(Handler.java:907) at android.os.Handler.dispatchMessage(Handler.java:105) at android.os.Looper.loop(Looper.java:216) at android.app.ActivityThread.main (ActivityThread.java:7625) at java.lang.reflect.Method.invoke(Native Method) at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:524) at com.android.internal.os .ZygoteInit.main(ZygoteInit.java:987)

Because RadioGroup is an element of the custom_dialog.xml then you must find RadioGroup from View of custom_dialog.xml , try with the code:因为RadioGroupcustom_dialog.xml一个元素,所以你必须从custom_dialog.xml View 中找到RadioGroup ,尝试使用代码:

LayoutInflater layoutInflater=getActivity().getLayoutInflater();
View view=layoutInflater.inflate(R.layout.custom_dialog,null); //load custom_dialog.xml to View
...
RadioGroup radioGroup=view.findViewById(R.id.radioGroup);     //try to retrieve rarioGroup in custom_dialog.xml

Change this line:改变这一行:

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

to:到:

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

radioGroup is in your dialog radioGroup在您的对话中

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

相关问题 Android:尝试在 null object 引用上调用虚拟方法“void android.widget.Button.setOnClickListener(android.view.View$OnClickListener)” - Android:Attempt to invoke virtual method 'void android.widget.Button.setOnClickListener(android.view.View$OnClickListener)' on a null object reference 尝试在空对象引用上调用虚拟方法“void android.widget.Button.setOnClickListener(android.view.View$OnClickListener)” - Attempt to invoke virtual method 'void android.widget.Button.setOnClickListener(android.view.View$OnClickListener)' on a null object reference 尝试在空对象引用上调用虚拟方法“void android.view.View.setOnClickListener(android.view.View$OnClickListener)” - Attempt to invoke virtual method 'void android.view.View.setOnClickListener(android.view.View$OnClickListener)' on a null object reference Attempt to invoke virtual method 'android.view.View android.widget.ImageView.findViewById(int)' on a null object reference - Attempt to invoke virtual method 'android.view.View android.widget.ImageView.findViewById(int)' on a null object reference 尝试在空对象引用上调用虚拟方法 &#39;Button.setOnClickListener(android.view.View$OnClickListener)&#39; - Attempt to invoke virtual method 'Button.setOnClickListener(android.view.View$OnClickListener)' on a null object reference 错误 - 尝试在空对象引用上调用虚拟方法___________setOnClickListener(android.view.View$OnClickListener)&#39; - Error- Attempt to invoke Virtual Method___________setOnClickListener(android.view.View$OnClickListener)' on a null object reference Android Listview: Attempt to invoke virtual method 'android.view.View android.view.View.findViewById(int)' on a null object reference - Android Listview: Attempt to invoke virtual method 'android.view.View android.view.View.findViewById(int)' on a null object reference FacebookSdk尝试在空对象引用上调用虚拟方法&#39;android.view.View android.view.View.findViewById(int)&#39; - FacebookSdk Attempt to invoke virtual method 'android.view.View android.view.View.findViewById(int)' on a null object reference 尝试在空对象引用上调用虚拟方法&#39;android.view.View android.view.View.findViewById(int)&#39; - Attempt to invoke virtual method 'android.view.View android.view.View.findViewById(int)' on a null object reference 我收到此错误:尝试在 null ZA8CFDE6331BD59EB2AC96F8911C4B66Z 参考上调用虚拟方法 'android.view.View android.widget.Button.findViewById(int)' - I'm getting this error: Attempt to invoke virtual method 'android.view.View android.widget.Button.findViewById(int)' on a null object reference
 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM