2016-06-02 8 views
2

Ich habe diese Ausnahme, und ich habe Antworten hier suchen, aber es hat nicht für mich funktioniert. Also ich habe diesen Fehler:Konnte Methode für android nicht ausführen: onClick (TextView.setText)

java.lang.IllegalStateException: Could not execute method for android:onClick 
    at android.support.v7.app.AppCompatViewInflater$DeclaredOnClickListener.onClick(AppCompatViewInflater.java:293) 
    at android.view.View.performClick(View.java:4084) 
    at android.view.View$PerformClick.run(View.java:16966) 

    at android.os.Handler.handleCallback(Handler.java:615) 
    at android.os.Handler.dispatchMessage(Handler.java:92) 
    at android.os.Looper.loop(Looper.java:137) 
    at android.app.ActivityThread.main(ActivityThread.java:4745) 
    at java.lang.reflect.Method.invokeNative(Native Method) 
    at java.lang.reflect.Method.invoke(Method.java:511) 
    at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:786) 
    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:553) 
    at dalvik.system.NativeStart.main(Native Method) 
    Caused by: java.lang.reflect.InvocationTargetException 
    at java.lang.reflect.Method.invokeNative(Native Method) 
    at java.lang.reflect.Method.invoke(Method.java:511) 
    at android.support.v7.app.AppCompatViewInflater$DeclaredOnClickListener.onClick(AppCompatViewInflater.java:288) 
    at android.view.View.performClick(View.java:4084)  
    at android.view.View$PerformClick.run(View.java:16966)  
    at android.os.Handler.handleCallback(Handler.java:615)  
    at android.os.Handler.dispatchMessage(Handler.java:92)  
    at android.os.Looper.loop(Looper.java:137)  
    at android.app.ActivityThread.main(ActivityThread.java:4745)  
    at java.lang.reflect.Method.invokeNative(Native Method)  
    at java.lang.reflect.Method.invoke(Method.java:511)  
    at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:786)  
    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:553)  
    at dalvik.system.NativeStart.main(Native Method)  
    Caused by: android.content.res.Resources$NotFoundException: String resource ID #0xb 
    at android.content.res.Resources.getText(Resources.java:229) 
    at android.support.v7.widget.ResourcesWrapper.getText(ResourcesWrapper.java:52) 
    at android.widget.TextView.setText(TextView.java:3620) 
    at com.henichaer.randomizer.MainActivity.onClick(MainActivity.java:64) 
    at java.lang.reflect.Method.invokeNative(Native Method)  
    at java.lang.reflect.Method.invoke(Method.java:511)  
    at android.support.v7.app.AppCompatViewInflater$DeclaredOnClickListener.onClick(AppCompatViewInflater.java:288)  
    at android.view.View.performClick(View.java:4084)  
    at android.view.View$PerformClick.run(View.java:16966)  
    at android.os.Handler.handleCallback(Handler.java:615)  
    at android.os.Handler.dispatchMessage(Handler.java:92)  
    at android.os.Looper.loop(Looper.java:137)  
    at android.app.ActivityThread.main(ActivityThread.java:4745)  
    at java.lang.reflect.Method.invokeNative(Native Method)  
    at java.lang.reflect.Method.invoke(Method.java:511)  
    at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:786)  
    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:553)  
    at dalvik.system.NativeStart.main(Native Method)  

Und das ist mein MainActivity Code (ye, es schlecht, aber ich lerne nur das):

public class MainActivity extends AppCompatActivity { 
private ImageButton settingsButon; 
private ImageButton infoButon; 
private SharedPreferences sp; 
TextView textView; 
private int min; 
private int max; 
private RelativeLayout relativeLayout; 
@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_main); 
    settingsButon = (ImageButton)findViewById(R.id.settingsButton); 
    infoButon = (ImageButton)findViewById(R.id.infoButton); 
    relativeLayout = (RelativeLayout)findViewById(R.id.relLayout); 
    textView = (TextView)findViewById(R.id.randomedView) ; 
    sp = PreferenceManager.getDefaultSharedPreferences(getApplicationContext()); 
    // textView.setPaintFlags(textView.getPaintFlags() | Paint.SUBPIXEL_TEXT_FLAG); 


} 

@Override 
protected void onResume() { 
    super.onResume(); 
    boolean darkTheme = sp.getBoolean("darkTheme",false); 
    if(darkTheme){ 
     relativeLayout.setBackgroundColor(getResources().getColor(R.color.colorPrimaryDark)); 
     settingsButon.setImageResource(R.drawable.settings_white); 
     infoButon.setImageResource(R.drawable.information_white); 
    } 
    else { 
     relativeLayout.setBackgroundColor(getResources().getColor(R.color.colorPrimary)); 
     settingsButon.setImageResource(R.drawable.settings_black); 
     infoButon.setImageResource(R.drawable.information_black); 
    } 

    min = Integer.parseInt(sp.getString("minNumber", "1")); 
    max = Integer.parseInt(sp.getString("maxNumber", "100")); 
} 

public void settingsClick(View view) { 
    Intent intent = new Intent(this,Preferences.class); 
    startActivity(intent); 
} 


public void onClick(View view) { 
     Randomizer randomizer = new Randomizer(); 
     int randomed = randomizer.randomNext(min,max); 
     System.out.println(randomed); 
     textView.setText(randomed); 

} 

So hält es Arbeit in diesem Teil:

Ich habe diese TextView initialisieren und Android: onClick, aber ich denke, ich habe etwas falsch gemacht. Wenn ich nur string schreibe, funktioniert es gut, aber wenn ich klicke (tippe), funktioniert die App nicht mehr P.S. Sorry für mein Englisch

+0

Konvertieren Sie Ihr zufälliges int in eine Zeichenkette vorfrore, indem Sie es in setText() verwenden. –

+0

konvertieren oder Sie können 'textView.setText (randomed +" ");' –

+1

Ändern Sie diese Zeile in textView.setText (String.valueOf (randomed)); –

Antwort

3

Sie den Aufruf der textView.setText(String s) Methode mit einem Parameter, der kein String ist. Bitte konvertieren Sie einfach Ihr Argument randomed in einen String, wenn Sie textView.setText(String s) entweder mit textView.setText(new String(randomed)) oder textView.setText(""+randomed) aufrufen.

0
textView.setText(randomed+""); 
+1

Danke für die Einreichung! Könnten Sie bitte, um den zukünftigen Lesern zu helfen, eine Erklärung hinzufügen, warum dies die gestellte Frage löst? – gariepy

Verwandte Themen