Android 使用单选按钮更改视图可见性时的NPE
我试图通过单击单选按钮来更改视图的可见性和编辑文本,但它不起作用。问题是java空指针。我怎样才能修好它?我验证了所有变量都是正确的Android 使用单选按钮更改视图可见性时的NPE,android,Android,我试图通过单击单选按钮来更改视图的可见性和编辑文本,但它不起作用。问题是java空指针。我怎样才能修好它?我验证了所有变量都是正确的 public class MainActivity extends Activity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(
public class MainActivity extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
}
View rad1 = (RadioButton)findViewById(R.id.radio1);
View rad2 = (RadioButton)findViewById(R.id.radio2);
final View test = findViewById(R.id.ProvencePrefecureView);
final EditText test1 = (EditText) findViewById(R.id.ProvencePrefecureEdit);
final View test2 = findViewById(R.id.rg);
final View test3 = (EditText) findViewById(R.id.Commune_arrondView);
final EditText test4 = (EditText) findViewById(R.id.Commune_arrondEdit);
public void onRadioButtonClicked(View view) {
// Is the button now checked?
boolean checked = ((RadioButton) view).isChecked();
// Check which radio button was clicked
switch(view.getId()) {
case R.id.radio1:
if (checked)
test.setVisibility(1);
test1.setVisibility(1);
test3.setVisibility(1);
test4.setVisibility(1);
break;
case R.id.radio2:
if (checked)
break;
}
}
}
XML:
Java中的所有代码都必须在一个方法中。试试这个:
final View rad1;
final View rad2;
final View test;
final EditText;
final View test2;
final View test3;
final EditText test4;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
rad1 = (RadioButton)findViewById(R.id.radio1);
rad2 = (RadioButton)findViewById(R.id.radio2);
test = findViewById(R.id.ProvencePrefecureView);
test1 = (EditText) findViewById(R.id.ProvencePrefecureEdit);
test2 = findViewById(R.id.rg);
test3 = (EditText) findViewById(R.id.Commune_arrondView);
test4 = (EditText) findViewById(R.id.Commune_arrondEdit);
}
发布您的整个错误您必须定义这些测试、测试1、测试3和测试4视图最终以在onRadioButtonClicked方法中达到它们。帮你自己一个忙,在onRadioButtonClicked方法上调试。然后共享完整的活动代码。该错误NullPointerException包含堆栈跟踪,在某个点上会包含对源代码中特定行的引用。转到该行,找出不应该为空的
null
,然后修复它。如果无法修复,请确切地告诉我们是哪一行导致了问题。为什么所有代码都要在方法之外设置对布局对象的引用?它永远不会执行。我试过这个,但没用!在方法onRadioButtonClicked(视图视图)中未检测到变量testx。问题发生在视图rad1=(RadioButton)findViewById(R.id.radio1)中;但这是正确的!!请了解范围
。将变量声明为类字段,并在onCreate()中初始化它们。您应该先尝试一些基本的Java教程,然后学习Android。我已经编辑了我的答案。非常感谢Simon,我会像你说的那样了解范围,但首先我必须完成我正在处理的应用程序。再次感谢
final View rad1;
final View rad2;
final View test;
final EditText;
final View test2;
final View test3;
final EditText test4;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
rad1 = (RadioButton)findViewById(R.id.radio1);
rad2 = (RadioButton)findViewById(R.id.radio2);
test = findViewById(R.id.ProvencePrefecureView);
test1 = (EditText) findViewById(R.id.ProvencePrefecureEdit);
test2 = findViewById(R.id.rg);
test3 = (EditText) findViewById(R.id.Commune_arrondView);
test4 = (EditText) findViewById(R.id.Commune_arrondEdit);
}