简体   繁体   中英

android.content.res.Resources$NotFoundException: String array resource ID #0x0 while accessing getResource()

I'm really new to Android. I am getting this error(application is crashing) while running it. I am trying to access string array in my main.java by calling the getResources(). But Resource Not Found Exception is thrown. Please have a look at my code given below :

 import android.os.Bundle;
    import android.content.res.Resources;
    import android.app.Activity;
    import android.view.Menu;
    import android.view.ViewGroup;
    import android.widget.*;
   //import com.packtpub.kitchendroid.R;

    public class QuestionActivity extends Activity {

    private Button[] buttons;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_question);
        initQuestionScreen();
    }

    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        // Inflate the menu; this adds items to the action bar if it is present.
        getMenuInflater().inflate(R.menu.question, menu);
        return true;
    }

    private static int getQuestionId(final Resources res,final int index)
    {
        final String[] questions = res.getStringArray(R.array.questions);
        return     res.getIdentifier(questions[index],"array","com.packtub.kitchendroid");
    }

    private int getQuestionIndex()
    {
        return getIntent().getIntExtra("KitchenDroid.Question", 0);
    }

    private void initQuestionScreen()
    {
        TextView question = (TextView)findViewById(R.id.question);
        ViewGroup answers = (ViewGroup)findViewById(R.id.answers);
            Resources resources1 = getResources();
        int questionID = getQuestionId(resources1, getQuestionIndex());
        String[] questionData = resources1.getStringArray(questionID);
        question.setText(questionData[0]);
        int answerCount = questionData.length -1;
        buttons = new Button[answerCount];
        for(int i=0;i<answerCount;i++)
        {
            String answer = questionData[i+1];
            Button button = new Button(this);
            button.setText(answer);
            answers.addView(button);
            buttons[i]=button;

          }


            }
    }

my xml is as follows :

    <?xml version="1.0" encoding="utf-8"?>
    <resources>

        <string name="app_name">Kitchen Droid</string>
        <string name="action_settings">Settings</string>
        <string name="question">Please wait</string>
        <string name="skip">Skip Question</string>
        <string name="feedme">Feed Me!..</string>
        <string-array name="questions">
            <item>vegetarian</item>
            <item>size</item>
        </string-array>
        <string-array name="vegetarian">
             <item>Are you a vegeterian?</item>
             <item>Yes</item>
             <item>No</item>
             <item>I\'m a vegetarian</item>
        </string-array>
       <string-array name="size">
            <item>How much do you feel like eating?</item>
            <item>A large meal</item>
            <item>Just a nice single serving of food</item>
            <item>Some finger foods</item>
            <item>Just a snack</item>
        </string-array>
    </resources>

Please help me out with this issue.Apologies if the question is not appropriate as I am completely new to Android

Do you have a typo in your package name? Seems like

res.getIdentifier(questions[index],"array","com.packtub.kitchendroid");

should be

res.getIdentifier(questions[index],"array","com.packtpub.kitchendroid");

or alternatively, you can use:

res.getIdentifier(questions[index], "array", QuestionActivity.this.getPackageName());

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM