Context wird nicht gefunden, wieso?

  • Antworten:10
Ben Becker
  • Forum-Beiträge: 209

07.06.2011, 22:56:59 via Website

Ich habe einen Fehler in meinem Code. Und zwar kann er an der fetten Stelle den String R.string.tipps nicht finden. In Strings.xml ist der String aber drin. Daher glaube ich, dass da ein Fehler mit dem Context ist und ich den falsch abrufe. Wo liegt mein Fehler?

1public class TabWidget extends TabActivity {
2 public TextView textview;
3 public JSONObject Jarr;
4 public ProgressDialog progDialog;
5 public LinearLayout ll;
6
7
8
9 /** Called when the activity is first created. */
10 @Override
11 public void onCreate(Bundle savedInstanceState) {
12 super.onCreate(savedInstanceState);
13 setContentView(R.layout.main);
14 final TableLayout tl = new TableLayout(this);
15 final TableRow tr = new TableRow(this);
16 final TextView labelTV = new TextView(this);
17 final TextView labelTV2 = new TextView(this);
18
19 Resources res = getResources(); // Resource object to get Drawables
20 TabHost tabHost = getTabHost(); // The activity TabHost
21 TabHost.TabSpec spec; // Resusable TabSpec for each tab
22 Intent intent; // Reusable Intent for each tab
23
24 // Create an Intent to launch an Activity for the tab (to be reused)
25 intent = new Intent().setClass(this, ArtistsActivity.class);
26
27 // Initialize a TabSpec for each tab and add it to the TabHost
28 spec = tabHost.newTabSpec("artists").setIndicator("Artists",
29 res.getDrawable(R.drawable.ic_tab_artists))
30 .setContent(new TabHost.TabContentFactory() {
31
32 public View createTabContent(String tag) {
33
34
35
36 ll = (LinearLayout) findViewById(R.id.ll1);
37 tl.setId(100);
38 tl.setStretchAllColumns(true);
39 tl.setBackgroundColor(Color.WHITE);
40 ll.addView(tl);
41
42 tr.setId(200);
43 tr.setLayoutParams(new LayoutParams(LayoutParams.FILL_PARENT, LayoutParams.WRAP_CONTENT));
44
45 tl.addView(tr);
46 // Create a TextView to house the name of the province
47
48 labelTV.setId(200);
49
50 labelTV.setText(getApplicationContext().getString(R.string.tipps));
51 labelTV.setTextColor(Color.BLACK);
52 tr.addView(labelTV);
53 labelTV2.setId(201);
54 labelTV2.setText("2. Zelle");
55 labelTV2.setTextColor(Color.BLACK);
56 tr.addView(labelTV2);
57 textview =(TextView) findViewById(R.id.textView1);
58 textview.setText("This is the Artists tab");
59
60 return ll;
61 }
62 });
63 tabHost.addTab(spec);
64
65 // Do the same for the other tabs
66 intent = new Intent().setClass(this, AlbumsActivity.class);
67 spec = tabHost.newTabSpec("albums").setIndicator("Albums",
68 res.getDrawable(R.drawable.ic_tab_albums))
69 .setContent(intent);
70 tabHost.addTab(spec);
71
72 intent = new Intent().setClass(this, SongsActivity.class);
73 spec = tabHost.newTabSpec("songs").setIndicator("Songs",
74 res.getDrawable(R.drawable.ic_tab_songs))
75 .setContent(intent);
76 tabHost.addTab(spec);
77
78 tabHost.setCurrentTab(1);
79 }

Antworten
Ben Becker
  • Forum-Beiträge: 209

07.06.2011, 23:37:15 via Website

folgendes aus dem Logcat:

106-07 21:38:48.514: ERROR/AndroidRuntime(889): Uncaught handler: thread main exiting due to uncaught exception
206-07 21:38:48.533: ERROR/AndroidRuntime(889): java.lang.RuntimeException: Unable to start activity ComponentInfo{de.sportwettenblogger.de.tabwidget/de.sportwettenblogger.de.tabwidget.TabWidget}: android.content.res.Resources$NotFoundException: String resource ID #0x7f040007
306-07 21:38:48.533: ERROR/AndroidRuntime(889): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2401)
406-07 21:38:48.533: ERROR/AndroidRuntime(889): at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2417)
506-07 21:38:48.533: ERROR/AndroidRuntime(889): at android.app.ActivityThread.access$2100(ActivityThread.java:116)
606-07 21:38:48.533: ERROR/AndroidRuntime(889): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1794)
706-07 21:38:48.533: ERROR/AndroidRuntime(889): at android.os.Handler.dispatchMessage(Handler.java:99)
806-07 21:38:48.533: ERROR/AndroidRuntime(889): at android.os.Looper.loop(Looper.java:123)
906-07 21:38:48.533: ERROR/AndroidRuntime(889): at android.app.ActivityThread.main(ActivityThread.java:4203)
1006-07 21:38:48.533: ERROR/AndroidRuntime(889): at java.lang.reflect.Method.invokeNative(Native Method)
1106-07 21:38:48.533: ERROR/AndroidRuntime(889): at java.lang.reflect.Method.invoke(Method.java:521)
1206-07 21:38:48.533: ERROR/AndroidRuntime(889): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:791)
1306-07 21:38:48.533: ERROR/AndroidRuntime(889): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:549)
1406-07 21:38:48.533: ERROR/AndroidRuntime(889): at dalvik.system.NativeStart.main(Native Method)
1506-07 21:38:48.533: ERROR/AndroidRuntime(889): Caused by: android.content.res.Resources$NotFoundException: String resource ID #0x7f040007
1606-07 21:38:48.533: ERROR/AndroidRuntime(889): at android.content.res.Resources.getText(Resources.java:205)
1706-07 21:38:48.533: ERROR/AndroidRuntime(889): at android.content.res.Resources.getString(Resources.java:258)
1806-07 21:38:48.533: ERROR/AndroidRuntime(889): at android.content.Context.getString(Context.java:149)
1906-07 21:38:48.533: ERROR/AndroidRuntime(889): at de.sportwettenblogger.de.tabwidget.TabWidget$1.createTabContent(TabWidget.java:83)
2006-07 21:38:48.533: ERROR/AndroidRuntime(889): at android.widget.TabHost$FactoryContentStrategy.getContentView(TabHost.java:600)
2106-07 21:38:48.533: ERROR/AndroidRuntime(889): at android.widget.TabHost.setCurrentTab(TabHost.java:317)
2206-07 21:38:48.533: ERROR/AndroidRuntime(889): at android.widget.TabHost.addTab(TabHost.java:210)
2306-07 21:38:48.533: ERROR/AndroidRuntime(889): at de.sportwettenblogger.de.tabwidget.TabWidget.onCreate(TabWidget.java:96)
2406-07 21:38:48.533: ERROR/AndroidRuntime(889): at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1123)
2506-07 21:38:48.533: ERROR/AndroidRuntime(889): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2364)
2606-07 21:38:48.533: ERROR/AndroidRuntime(889): ... 11 more

Antworten
Markus B.
  • Forum-Beiträge: 636

07.06.2011, 23:51:00 via Website

Hmmmm, NotFoundException: String resource ID #0x7f040007 spricht dafür das der entsprechende String nicht in der string.xml vorhanden ist. Du sagst aber dieser ist vorhanden also glaube ich das mal :)
Was passiert denn wenn du folgendes schreibst:
1getString(R.string.tipps)

getApplicationContext() kannste dir sparen.

Gruß,
Markus

Antworten
Ben Becker
  • Forum-Beiträge: 209

07.06.2011, 23:54:51 via Website

Ja der ist drin, auch mit der ID, das habe ich auch schon geprüft. Da kommt die gleiche Fehlermeldung. Irgendwie scheint der in ner falschen R datei zusuchen (wenn das richtig ausgedrückt ist).

1/* AUTO-GENERATED FILE. DO NOT MODIFY.
2 *
3 * This class was automatically generated by the
4 * aapt tool from the resource data it found. It
5 * should not be modified by hand.
6 */
7
8package de.sportwettenblogger.de.tabwidget;
9
10public final class R {
11 public static final class attr {
12 }
13 public static final class drawable {
14 public static final int ic_tab_albums=0x7f020000;
15 public static final int ic_tab_artists=0x7f020001;
16 public static final int ic_tab_artists_grey=0x7f020002;
17 public static final int ic_tab_artists_white=0x7f020003;
18 public static final int ic_tab_songs=0x7f020004;
19 public static final int icon=0x7f020005;
20 }
21 public static final class id {
22 public static final int ll1=0x7f050003;
23 public static final int opt_AnzeigeAktualisieren=0x7f050000;
24 public static final int opt_AnzeigeBeenden=0x7f050001;
25 public static final int rl1=0x7f050002;
26 public static final int textView1=0x7f050004;
27 }
28 public static final class layout {
29 public static final int hauptmenue=0x7f030000;
30 public static final int main=0x7f030001;
31 }
32 public static final class string {
33 public static final int app_AnzeigeAktualisieren=0x7f040005;
34 public static final int app_AnzeigeBeenden=0x7f040006;
35 public static final int app_name=0x7f040001;
36 public static final int hello=0x7f040000;
37 public static final int table_prozent=0x7f040004;
38 public static final int table_richtig_falsch=0x7f040003;
39 public static final int table_tipps=0x7f040002;
40 public static final int tipps=0x7f040007;
41 }
42}


106-07 21:55:47.984: ERROR/AndroidRuntime(922): Uncaught handler: thread main exiting due to uncaught exception
206-07 21:55:48.004: ERROR/AndroidRuntime(922): java.lang.RuntimeException: Unable to start activity ComponentInfo{de.sportwettenblogger.de.tabwidget/de.sportwettenblogger.de.tabwidget.TabWidget}: android.content.res.Resources$NotFoundException: String resource ID #0x7f040007
306-07 21:55:48.004: ERROR/AndroidRuntime(922): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2401)
406-07 21:55:48.004: ERROR/AndroidRuntime(922): at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2417)
506-07 21:55:48.004: ERROR/AndroidRuntime(922): at android.app.ActivityThread.access$2100(ActivityThread.java:116)
606-07 21:55:48.004: ERROR/AndroidRuntime(922): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1794)
706-07 21:55:48.004: ERROR/AndroidRuntime(922): at android.os.Handler.dispatchMessage(Handler.java:99)
806-07 21:55:48.004: ERROR/AndroidRuntime(922): at android.os.Looper.loop(Looper.java:123)
906-07 21:55:48.004: ERROR/AndroidRuntime(922): at android.app.ActivityThread.main(ActivityThread.java:4203)
1006-07 21:55:48.004: ERROR/AndroidRuntime(922): at java.lang.reflect.Method.invokeNative(Native Method)
1106-07 21:55:48.004: ERROR/AndroidRuntime(922): at java.lang.reflect.Method.invoke(Method.java:521)
1206-07 21:55:48.004: ERROR/AndroidRuntime(922): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:791)
1306-07 21:55:48.004: ERROR/AndroidRuntime(922): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:549)
1406-07 21:55:48.004: ERROR/AndroidRuntime(922): at dalvik.system.NativeStart.main(Native Method)
1506-07 21:55:48.004: ERROR/AndroidRuntime(922): Caused by: android.content.res.Resources$NotFoundException: String resource ID #0x7f040007
1606-07 21:55:48.004: ERROR/AndroidRuntime(922): at android.content.res.Resources.getText(Resources.java:205)
1706-07 21:55:48.004: ERROR/AndroidRuntime(922): at android.content.res.Resources.getString(Resources.java:258)
1806-07 21:55:48.004: ERROR/AndroidRuntime(922): at android.content.Context.getString(Context.java:149)
1906-07 21:55:48.004: ERROR/AndroidRuntime(922): at de.sportwettenblogger.de.tabwidget.TabWidget$1.createTabContent(TabWidget.java:83)
2006-07 21:55:48.004: ERROR/AndroidRuntime(922): at android.widget.TabHost$FactoryContentStrategy.getContentView(TabHost.java:600)
2106-07 21:55:48.004: ERROR/AndroidRuntime(922): at android.widget.TabHost.setCurrentTab(TabHost.java:317)
2206-07 21:55:48.004: ERROR/AndroidRuntime(922): at android.widget.TabHost.addTab(TabHost.java:210)
2306-07 21:55:48.004: ERROR/AndroidRuntime(922): at de.sportwettenblogger.de.tabwidget.TabWidget.onCreate(TabWidget.java:96)
2406-07 21:55:48.004: ERROR/AndroidRuntime(922): at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1123)
2506-07 21:55:48.004: ERROR/AndroidRuntime(922): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2364)
2606-07 21:55:48.004: ERROR/AndroidRuntime(922): ... 11 more

— geändert am 07.06.2011, 23:55:09

Antworten
Markus B.
  • Forum-Beiträge: 636

08.06.2011, 00:06:03 via Website

Hmmmm, das verstehe ich im Moment auch nicht wirklich...
Magst dein Projekt irgendwo hochladen oder so ? Sonst wüsste ich im Moment nicht wie ich dir weiterhelfen könnte.

Gruß,
Markus

Antworten
Ben Becker
  • Forum-Beiträge: 209

08.06.2011, 10:32:17 via Website

Das wäre super nett wenn du da dann mal genau drüber schaust. Hier ist der gesamte Quellcode: http://benjaminbecker.de/zweitab.zip Hoffe du findest meinen Fehler. :( So als Android APP Programmier Anfänger ist das als mal doch recht schwer.

Antworten
Gelöschter Account
  • Forum-Beiträge: 408

08.06.2011, 11:30:43 via Website

Hi, hast du Eclipse mal neugestartet?

Hatte das Problem vor kurzem auch, da hat Eclipse die Datei irgendwie durcheinandergewürfelt.
Nach nem Neustart wurde die Datei neu erstellt und das Problem war behoben...

Gruß Oli - Diese Nachricht wurde mit einer Taschenlampe in das offenliegende Ende eines Glasfaserkabels gemorst! - Follow me on Twitter - AndroitPIT-Regeln

Antworten
Ben Becker
  • Forum-Beiträge: 209

08.06.2011, 12:21:22 via Website

Jepp habe Eclipse neu gestartet, sogar den ganzen Rechner. :) Habe es bevor ich die Datei hier gepostet habe noch mal versucht gehabt. Es geht nicht. :(

Antworten
Ben Becker
  • Forum-Beiträge: 209

08.06.2011, 17:25:25 via Website

Jetzt geht es. Ich habe die Zeile gelöscht, den String an einer anderen Stelle aufgerufen -> Geht
Anschließend habe ich wieder alles zurück gebaut -> Geht

Keine Ahnung wieso es dann davor nicht ging.
Aber vielleicht kannst du mir was anderes sagen, kann ich dieses public View createTabContent(String tag) auch in eine eigene Klasse auslagern? Oder kann ich dann wieder nicht in die View schreiben?

Antworten