0

Ich mache eine App mit Hintergrund-Services und Broadcast-Empfänger, und meine App besteht aus einem MainActivity.java und myServiceRunner.java. Wenn ich den Hintergrunddienst starte, gibt es mir diesen Fehler, android.content.res.Resources$NotFoundException: String resource id #0x64.

ich diese Codes innerhalb protected void onCreate (Bundle savedInstanceState) setzen:

 IntentFilter mainFilter=new IntentFilter("liren.action.GOSERVICE3"); 
     receiver=new MyMainLocalReceiver(); 
     registerReceiver(receiver, mainFilter); 

MyMainLocalReceiver.java

public class MyMainLocalReceiver extends BroadcastReceiver{ 

    @Override 
    public void onReceive(Context context, Intent intent) { 

     try 
     { 
      int serviceData=intent.getIntExtra("serviceData",0); 
      //Toast.makeText(getApplicationContext(), serviceData,Toast.LENGTH_SHORT).show(); 

      tvStepsCount.setText(serviceData); 
     } 
     catch (Exception e) 
     { 
      tvStepsCount.setText(e.toString()); 
     } 

    } 
} 

Innen myServiceRunner erweitert Service-Klasse, habe ich diese Codes innerhalb hinzugefügt onStartCommand-Methode.

<service android:name=".myServiceRunner"></service> 
    <receiver android:name=".RecordSaved$MyMainLocalReceiver"></receiver> 

Ich konnte nicht herausfinden, den Fehler, kann jemand bitte helfen Sie mir:

@Override 
    public int onStartCommand(Intent intent, int flags, int startId) { 
    Thread triggerService=new Thread(new Runnable() { 
     @Override 
     public void run() { 
      for(;;) 
      { 
       try 
       { 
        Intent myFilteredResponse = new Intent("liren.action.GOSERVICE3"); 
        myFilteredResponse.putExtra("serviceData",100); 
        sendBroadcast(myFilteredResponse); 
        Thread.sleep(5000); 
       } 
       catch (Exception e) 
       { 
        e.printStackTrace(); 
       } 
      } 
     } 
    }); 
    triggerService.start(); 
    return super.onStartCommand(intent, flags, startId); 
} 

manifest.xml

Ich habe diese hinzugefügt? Danke :)

+0

versuchen tvStepsCount.setText ("" + Servicedata); –

+0

Mögliche Duplikat [android.content.res.Resources $ NotFoundException: String Ressource ID # 0x0] (http://stackoverflow.com/questions/20177003/android-content-res-resourcesnotfoundexception-string-resource-id-0x0) – Ironman

+0

Vielen dank @Sathish Kumar J, es funktioniert :) – Antoni

Antwort

2

Sie verwenden .SetText(). aber Sie passieren int Typ. das ist ein Problem. so müssen Sie Ihre int to String

Try konvertieren wie

tvStepsCount.setText("" + serviceData); // concat with empty string 
0

Sie können dies auch tun:

tvStepsCount.setText(String.valueOf(serviceData)); 
1

Wie Sie sehen können in der Textview-Klasse, erste Argument TextView.setText () Methode kann entweder eine resId sein, dh eine ganze oder char-Sequenz oder char-Array. Daher wird Android Studio keine Fehlermeldung oder Warnung anzeigen, während Sie einen Integer-Wert an TexView.setText() übergeben.

In Ihrem Code tvStepsCount.setText(serviceData); Servicedata ist ein Integer-Typ, android treat diesen Wert als RESID und für die entsprechende Ressource in R-Klasse aussehen. Da serviceData ist keine resId tatsächlich Android Ressourcen $ NotFoundException.

Also müssen wir in diesem Fall serviceData explizit in String Typ konvertieren.

Verwandte Themen