2017-02-28 3 views
-1

so hatte ich eine Version von dieser Arbeit früher. Leider habe ich vergessen, die Arbeitsversion auf meinen USB zu kopieren, also habe ich versucht, dies zu Hause zu kopieren. Ich habe 5 Richtfunkknöpfe. Jedes Mal, wenn eine Option aktiviert ist, soll der Text in einer TextView so geändert werden, dass er der zugehörigen Richtung entspricht. Leider scheint das nicht zu funktionieren. Beim Versuch, die App auszuführen, stürzt sie ab.OnClick-Ereignis für Radio Buttons funktionieren nicht

Der Debugging-Bildschirm wirft auch etwas über Nullzeigerausnahmen aus. Außerdem gibt es im XML-Code für die Optionsfelder etwas über die Methode, die ich anrufe, die nicht in Main gefunden wird. Jede Hilfe wird geschätzt.

<RadioButton 
    android:text="@string/north" 
    android:layout_width="79dp" 
    android:layout_height="wrap_content" 
    android:layout_marginLeft="12dp" 
    android:layout_marginStart="12dp" 
    android:layout_marginTop="29dp" 
    android:id="@+id/north" 
    android:onClick="onClick" /> 

<RadioButton 
    android:text="@string/south" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:id="@+id/south" /> 

<RadioButton 
    android:text="@string/east" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:id="@+id/east" /> 

<RadioButton 
    android:text="@string/west" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:id="@+id/west" /> 

<RadioButton 
    android:text="@string/center" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:id="@+id/center" /> 

</RadioGroup> 

<SeekBar 
    android:layout_width="match_parent" 
    android:layout_height="wrap_content" 
    android:layout_marginTop="22dp" 
    android:id="@+id/speed" 
    android:layout_below="@+id/Speed" 
    android:layout_alignParentLeft="true" 
    android:layout_alignParentStart="true" /> 

Aktivität:

public class MainActivity extends AppCompatActivity { 
    RadioButton n, s, e, w, c; 
    // TextView text = (TextView)findViewById(R.id.text); 
    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_main); 

    } 

    public View.OnClickListener optionOnClickListener; 

    { 
     optionOnClickListener = new OnClickListener() { 

      public View v; 

      public void onClick(View v) { 
       this.v = v; 
       TextView text = (TextView) findViewById(R.id.text); 
       String str = null; 
       n = (RadioButton) findViewById(R.id.north); 
       s = (RadioButton) findViewById(R.id.south); 
       e = (RadioButton) findViewById(R.id.east); 
       w = (RadioButton) findViewById(R.id.west); 
       c = (RadioButton) findViewById(R.id.center); 


       // you can simply copy the string of clicked button. 
       str = ((RadioButton) v).getText().toString(); 
       text.setText(str); 

       // or, you can check each radiobutton and find which one is checked. 
       if (n.isChecked()) { 
        text.setText("North"); 
       } else if (s.isChecked()) { 
        text.setText("South"); 
       } else if (e.isChecked()) { 
        text.setText("East"); 
       } else if (w.isChecked()) { 
        text.setText("West"); 
       } else if (c.isChecked()) { 
        text.setText("Center"); 
       } 

      } 

     }; 
    } 

} 
+0

können Sie den Stack-Trace Ihrer Ausnahme buchen? –

+0

Ich denke, dass Sie in der Lage sein werden, eine Antwort hier http://stackoverflow.com/questions/9748070/radio-group-onclick-event-not-firing-how-do-itel-which-isselected zu finden für Ihre Frage – Shyamali

+0

Eine Frage über eine Radio ** -Gruppe ** wird ihm sagen, warum diese App nicht startet? –

Antwort

0

Da Sie die onClick Methode von XML diesen Block setzen, die Sie:

public View.OnClickListener optionOnClickListener; 

{ 
    optionOnClickListener = new OnClickListener() { 

     public View v; 

//delete above here 
     public void onClick(View v) { 
      this.v = v; //delete this 
      TextView text = (TextView) findViewById(R.id.text); 
      String str = null; 
      n = (RadioButton) findViewById(R.id.north); 
      s = (RadioButton) findViewById(R.id.south); 
      e = (RadioButton) findViewById(R.id.east); 
      w = (RadioButton) findViewById(R.id.west); 
      c = (RadioButton) findViewById(R.id.center); 


      // you can simply copy the string of clicked button. 
      str = ((RadioButton) v).getText().toString(); 
      text.setText(str); 

      // or, you can check each radiobutton and find which one is checked. 
      if (n.isChecked()) { 
       text.setText("North"); 
      } else if (s.isChecked()) { 
       text.setText("South"); 
      } else if (e.isChecked()) { 
       text.setText("East"); 
      } else if (w.isChecked()) { 
       text.setText("West"); 
      } else if (c.isChecked()) { 
       text.setText("Center"); 
      } 

     } 

//delete below here 

    }; 
} 

Sollte sein:

//remove unneccesary variable and wrapper 

public void onClick(View v) { 
    ... // keep all the lines in this method except this.v = v; 
} 

Danach es sollte kompilieren, obwohl man Zusätzlich würde ich machen, alle findViewById (...) in onCreate zu tun, statt sie bei jedem Klick zu tun

+0

Wenn ich den Wrapper entfernen, bekomme ich eine Menge Fehler. Wie würde der neue Code aussehen? –

+0

Genau wie in meinem Beispiel ... Ich weiß nicht, was du mehr bedeuten könntest. Vor allem, wie du sagst, du hast das früher gemacht. Was ist die "Last der Fehler"? –

+0

Variable und Wrapper sind weg. Es stürzt immer noch ab. Ich kann meinen Code nicht früher abrufen. –

0

Okay, so stellte sich heraus, dass ich nicht einmal den Hörer brauchte, wie die Bibliothek schien sich darum zu kümmern. Außerdem denke ich, dass Nick Cardoso Recht hatte, als er sagte, dass onClick reserviert sei. Es war ein langer Tag. Vielen Dank für die Hilfe! Gute Nacht.

+0

John Casey, damit Ihr Problem zu lösen ist nicht .. ?? –