无法在android中获取CheckBox的引用

Unable to get the reference of CheckBox in android

提问人:Noman khanbhai 提问时间:9/25/2019 更新时间:9/25/2019 访问量:89

问:

我在活动布局中使用了 CheckBox。但我不知道为什么我没有得到 CheckBox 的引用。它每次都显示 NullPointerException。我在对话框片段中使用了另一个复选框,但它工作正常。我不知道NullPointerException的原因是什么。

这是xml代码

 <CheckBox
        android:id="@+id/ccb"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_gravity="center"
        android:layout_marginTop="8dp"
        android:text="Add Your Previous Amount\n with Current Amount "
        android:textColor="@color/batteryChargedBlue"
        android:textSize="13dp"
        android:fontFamily="@font/caviardreams_bolditalic"
        />

这是我使用复选框并获取 NullPointerException 的 java 代码。

public class StartActivity extends AppCompatActivity {



//Declaring the CheckBox variable globally


CheckBox scb;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);



    ...

       //Initializing in the onCreate() method
       scb = (CheckBox)findViewById(R.id.ccb);

    ...
}

//using it in the button clicked method to check whether checkbox is checked or not
public void setInitialMonthlyAmount(View view) {

      if(scb.isChecked()) { //Getting The NullPointerException Here Don't know why ??
                System.out.println("Checkbox is checked");
                //Code
            }else {
                //Code
            }
}


}

我认为一切都是正确的。我使用相同的方式获取其他视图(如 TextViews、EditText 等)的引用,它们工作正常。我不知道这个复选框有什么问题。请帮忙!!

Android-Activity 复选框 nullPointerException

评论

0赞 Martin Zeitler 9/25/2019
什么是 NullPointerException 的可能重复项,以及如何修复它?
0赞 Martin Zeitler 9/25/2019
可能你打得太早了。.setInitialMonthlyAmount()
0赞 Krystian G 9/25/2019
你有没有尝试过调试和检查这条线的效果是什么?scb = (CheckBox)findViewById(R.id.ccb);
0赞 Noman khanbhai 9/25/2019
我正在初始化onCreate()方法中的复选框。之后,我调用setInitialMonthlyAmount().@MartinZeitler
0赞 Noman khanbhai 9/25/2019
就在这行 'scb = (CheckBox)findViewById(R.id.ccb);'我正在打印 scb 的值,它在这两种情况下都给出了 null。我也以同样的方式使用其他视图,但它们工作正常。我不知道this.@KrystianG怎么了

答:

0赞 Thalis Vilela 9/25/2019 #1

确保您正在致电您的活动!setContentView(R.layout.your_layout_with_checkbox);onCreate

评论

0赞 Noman khanbhai 9/25/2019
我正在调用setContentView(R.layout.activity_start);。你的意思是我应该这样称呼它 setContentView(R.id.activity_start_with_checkbox): 或除此之外的东西。@ThalisVilela
1赞 Unaisul Hadi 9/25/2019 #2

你确定你是这样编码的 Activity 吗:?

public class StartActivity extends AppCompatActivity {

CheckBox scb;

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

    scb = (CheckBox)findViewById(R.id.ccb);
    setInitialMonthlyAmount(view)
}

public void setInitialMonthlyAmount(View view) {

  if(scb.isChecked()) { 
            System.out.println("Checkbox is checked");
            //Code
        }else {
            //Code
        }

}

评论

0赞 Noman khanbhai 9/25/2019
我没有在onCreateMethod()中调用setInitialMonthlyAmount(view)@unaisulhadi
0赞 Noman khanbhai 9/25/2019
setInitialMonthlyAmount(View view) 该方法在点击按钮时自动运行@unaisulhadi
0赞 Noman khanbhai 9/25/2019
我在 xml 中使用了 onClick() 方法,这解决了我的problem.@unaisulhadi
0赞 Unaisul Hadi 9/25/2019
还行。。。祝您编码愉快。!!