2013-10-30 137 views
-2

我試圖通過單擊單選按鈕來更改視圖的可見性並編輯文本,但它不起作用。問題是一個java空指針。我該如何解決它?我證實所有變量都是正確的。使用單選按鈕更改視圖可見性時的NPE

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:

<TextView 
    android:id="@+id/ProvencePrefecureView" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:layout_alignLeft="@+id/RegionView" 
    android:layout_below="@+id/RegionEdit" 
    android:layout_marginTop="16dp" 
    style="@style/question" 
    android:visibility="gone" 
    android:text="2. Province ou Préfecture : " 
    /> 

<EditText 
    android:id="@+id/ProvencePrefecureEdit" 
    android:layout_width="fill_parent" 
    android:layout_height="wrap_content" 
    android:layout_alignLeft="@+id/ProvencePrefecureView" 
    android:layout_below="@+id/ProvencePrefecureView" 
    android:layout_marginTop="6dp" 
    style="@style/reponse" 
    android:visibility="gone" 
    android:ems="10" 
    /> 

<TextView 
    android:id="@+id/Commune_arrondView" 
    android:layout_width="wrap_content" 
    android:visibility="gone" 
    android:layout_height="wrap_content" 
    android:layout_alignRight="@+id/IDENTView" 
    style="@style/question" 
    android:layout_below="@+id/ProvencePrefecureEdit" 
    android:layout_marginTop="16dp" 
    android:text="3. Commune/Arrondissement : " 
    /> 

<EditText 
    android:id="@+id/Commune_arrondEdit" 
    android:layout_width="fill_parent" 
    android:visibility="gone" 
    android:layout_height="wrap_content" 
    android:layout_alignLeft="@+id/NumeroDiscrictEdit" 
    android:layout_below="@+id/Commune_arrondView" 
    android:layout_marginTop="6dp" 
    style="@style/reponse" 
    android:ems="10" 
    /> 
+0

發表您的整個錯誤 –

+0

你必須定義的測試,爲test1,TEST3和TEST4的觀點最終在onRadioButtonClicked方法來達到這些目標。幫你一個忙,並在onRadioButtonClicked方法上進行調試。 – Devrim

+0

然後分享您的完整活動代碼。 – Devrim

回答

0

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); 

} 
+0

我試過這個,但沒有奏效! onRadioButtonClicked(View view)方法中未檢測到變量testx。 –

+0

問題發生在View rad1 =(RadioButton)findViewById(R.id.radio1);但它是正確的! –

+0

請了解'範圍'。將變量聲明爲類字段並在onCreate()中初始化它們。你應該先嚐試一些基本的Java教程,然後學習Android。我編輯了我的答案。 – Simon

相關問題