2016-07-22 21 views
0

Der Versuch, ein Griff auf Android zu bekommen throught Der große Nerd Ranch Guide, ich auf dieses Beispiel kam:Android Textview Ressource nicht gefunden

super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_quiz); 
    mQuestionTextView = (TextView) findViewById(R.id.question_text_view); 
    int question = mQuestionBank[mCurrentIndex].getTextResId(); 
    mQuestionTextView.setText(question); 

wo mQuestionBank

private Question[] mQuestionBank = new Question[] { 
     new Question(R.string.question_oceans, true), 
     new Question(R.string.question_mideast, false), 
     new Question(R.string.question_africa, false), 
     new Question(R.string.question_americas, true), 
     new Question(R.string.question_asia, true), 
}; 

und diejenigen definiert wurden, in strings.xml

<string name="question_oceans">The Pacific Ocean is larger than the Atlantic Ocean.</string> 
<string name="question_mideast">The Suez Canal connects the Red Sea and the Indian Ocean.</string> 
<string name="question_africa">The source of the Nile River is in Egypt.</string> 
<string name="question_americas">The Amazon River is the longest river in the Americas.</string> 
<string name="question_asia">Lake Baikal is the world\'s oldest and deepest freshwater lake.</string> 

aber ich bin eine Ressource nicht gefunden Ausnahme bekommen. (textResId ist das erste Feld der Frage Klasse)

EDIT:

Frage Klasse

public class Question { 
private int mTextResId; 
private boolean mAnswerTrue; 

public Question(int mTextResId, boolean mAnswerTrue) { 
    mTextResId=mTextResId; 
    mAnswerTrue=mAnswerTrue; 
} 

public int getTextResId() { 
    return mTextResId; 
} 

public void setTextResId(int textResId) { 
    mTextResId = textResId; 
} 

public boolean isAnswerTrue() { 
    return mAnswerTrue; 
} 

public void setAnswerTrue(boolean answerTrue) { 
    mAnswerTrue = answerTrue; 
} 
+0

Was ist mCurrentIndex? –

+0

poste deine logcat Ausgabe –

+0

mCurrentIndex ist eine private int = 0 – Boulbi

Antwort

0

verwenden Standard-Code:

Verwenden String-Array in yout String.xml Datei

<string-array name="questions"> 
    <item>The Pacific Ocean is larger than the Atlantic Ocean.</item> 
    <item>The Suez Canal connects the Red Sea and the Indian Ocean.</item> 
    <item>The source of the Nile River is in Egypt.</item> 
    <item>The Amazon River is the longest river in the Americas.</item> 
    <item>Lake Baikal is the world\'s oldest and deepest freshwater lake.</item> 
</string-array> 

Verwenden Sie jetzt den folgenden Code in Ihrer Java-Klasse

super.onCreate(savedInstanceState); 
setContentView(R.layout.activity_quiz); 
String[] mQuestionBank = getResources().getStringArray(R.array.questions); 
mQuestionTextView = (TextView) findViewById(R.id.question_text_view); 
String question = mQuestionBank[mCurrentIndex]; 
mQuestionTextView.setText(question); 
2

Versuchen Sie dies und lassen Sie mich das Ergebnis wissen. mQuestionTextView.setText(getResources().getString(question));

auch den Konstruktor Abschnitt der Frage Klasse ändern

public Question(int mTextResId, boolean mAnswerTrue) { 
    this.mTextResId=mTextResId; 
    this.mAnswerTrue=mAnswerTrue; 
} 
+0

Dieses Ergebnis in der gleichen Ausgabe. – Boulbi

+0

Bitte teilen sich die "Frage" Klasse teilen zu – lal

+0

Bitte geben Sie die constructer in Frage Klasse ändern öffentliche Frage (int mTextResId, boolean mAnswerTrue) { this.mTextResId = mTextResId; this.mAnswerTrue = mAnswerTrue; } – lal

0

Jedes Argument an den Konstruktor Schatten eines der Felder des Objekts - in der Konstruktor der Frageklasse, mTextResId ist eine lokale Kopie des Konstrukteurs erstes Argument & mAnswerTrue ist eine lokale Kopie des zweiten Arguments des Konstruktors.

beziehen sich auf die Frage Feld mTextResId muss der Konstruktor this.mTextResId verwenden & & this.mAnswerTrue. Versuchen Sie

public Question(int mTextResId, boolean mAnswerTrue) { 
    this.mTextResId = mTextResId; 
    this.mAnswerTrue = mAnswerTrue; 
} 
Verwandte Themen