2017-02-04 4 views
0

Ich bin ziemlich neu in Android Studio. Also entschuldige ich mich für die neue Frage. Ich habe Beiträge darüber gelesen, wie man setEnabled() verwendet; Methode zum Aktivieren und Deaktivieren eines Bodens. Wie Sie im Code sehen können, versuche ich eine zuvor deaktivierte Schaltfläche zu aktivieren (über xml mit android:enabled="false"/>). Immer wenn eines der Radiobuttons in einer radioGroup ausgewählt ist.Die Methode 'setEnabled' kann nicht aufgelöst werden. Android Studio

Der ‚setEnabled‘ Teil des Codes wird rot markiert und Fehler Pop: Methode ‚setEnabled(boolean)‘ nicht lösen kann

Hier ist der Code. Ich würde gerne wissen, warum das nicht funktioniert und wie man es beheben kann, anstatt nur die Antwort selbst. Vielen Dank im Voraus

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.radioButtonYes: 
      if (checked) 
       R.id.buttonNEXT.setEnabled(true); 
      break; 
     case R.id.radioButtonNo: 
      if (checked) 
       R.id.buttonNEXT.setEnabled(true); 
       break; 
     case R.id.radioButtonDontknow: 
      if (checked) 
       R.id.buttonNEXT.setEnabled(true); 
       break; 
    } 
+0

'R.id.buttonNEXT' von' int' Typ ist, können Sie nicht() 'dafür verwenden' setEnabled. –

Antwort

1

Was Sie versuchen setEnabled() mit einem int zu verwenden, was nicht möglich ist, wie R.id.someId von int Typ ist. Besser, eine Ansicht für diese ID zu finden und dann setEnabled() verwenden.

Das wird gut funktionieren,

((Button) findViewById(R.id.buttonNEXT)).setEnabled(true); 
+1

bekam den Punkt. –

+0

Vielen Dank für die Antwort! Ich habe es behoben und es funktioniert gut, und jetzt bekomme ich, was ich falsch gemacht habe. Ich plane, die Antwort von entweder Ja/Nein/Ich weiß nicht an eine Datenbank zu senden, deshalb habe ich den Schalterkasten gebaut. Denken Sie, dass das effizient ist? –

+0

Da Sie die gleiche Taste in allen drei Fällen aktivieren, denke ich, es ist nicht notwendig, 'switch-case' zu ​​setzen, es sei denn, Sie haben nur diese drei RadioButtons. –

0

Nicht

R.id.buttonNEXT.setEnabled(true); 

((Button) findViewById(R.id.buttonNEXT)).setEnabled(true); 

Schließlich DO:

switch(view.getId()) { 
    case R.id.radioButtonYes: 
     if (checked) 
      ((Button) findViewById(R.id.buttonNEXT)).setEnabled(true); 
      break; 
+1

sagen Sie ihm, wie würden Sie Button-Objekt bekommen, das ist, was sein Problem ist –

+2

'R.id.buttonNEXT' ist von' int' Typ können Sie 'setEnabled()' damit nicht verwenden. Sehen Sie, was andere geschrieben haben. –

+1

@jackjay tatsächlich in der Tat –

0

das ist falsch

R.id.buttonNEXT.setEnabled(true); 

R.id.buttonNEXT ist die id (nur eine ganze Zahl), die Sie verwenden müssen, um eine Schaltfläche erstellen

sollten Sie etwas tun müssen, um wie

Button myButton = (Button)findViewById(R.id.buttonNEXT); 

dann nach, dass Sie alle die Methode aufrufen ein Buttom hat

if (checked) 
     myButton.setEnabled(true); 
0

Sie sollten es wie diese verwenden

public void onRadioButtonClicked(View view) { 
    // Is the button now checked? 
    boolean checked = ((RadioButton) view).isChecked(); 
    Button b=(Button)findViewById(R.id.buttonNEXT); //casted to button. use the type is used 
    // Check which radio button was clicked 
    switch(view.getId()) { 
     case R.id.radioButtonYes: 
      if (checked) 
       b.setEnabled(true); //change to this 
      break; 
     case R.id.radioButtonNo: 
      if (checked) 
       b.setEnabled(true); //change to this 
       break; 
     case R.id.radioButtonDontknow: 
      if (checked) 
       b.setEnabled(true); //change to this 
       break; 
    } 
+0

obwohl Ihre Antwort richtig ist, aber Ihre Ansicht zu werfen ist gut für die Sicherheit. –

+0

Also sollte ich nicht die Sicht 'ausgesetzt' haben wie ich in meinem Code? –

+0

@DiegoFabiano tatsächlich haben Sie keine Ansicht in Ihrem Code finden, was Sie tun müssen, ist zuerst finden Sie Ihre Ansicht mit ID und dann sicher es in den entsprechenden Typ zu werfen und dann verwenden Sie es. –

Verwandte Themen