2015-04-25 96 views
0

嘗試在stackoverflow上查找它並沒有發現我想問。從Drawable imageResource導入圖像異常

我創建了一個FUNC將從我可繪製文件夾導入圖像,並將其顯示在一個ImageView的(我的數據庫有218張的圖片全部由從0 ID orderd)

代碼:(我之後會解釋這個問題)

private void pic_view(String pic2) { 
    // TODO Auto-generated method stub 
    //גישה לדגל לפי שמו וייבוא התמונה 
    Log.d("Result from pic function " , pic2); 
    ImageView imageView = (ImageView)findViewById(R.id.imageView1); 
    String uri ="@drawable/"; 
    uri += pic2;  
    int imageResource = getResources().getIdentifier(uri, pic2, getPackageName());//הצוות התמונה 
    Log.d("Imageresources", String.valueOf(imageResource));//get 0 problem 
    //if(imageResources!=0) 
    Drawable res= getResources().getDrawable(imageResource);//ציור התמונה 
    imageView.setImageDrawable(res); 

} 

當imageResource beacame(歌廳零)爲零我有一個致命的異常,我不知道我爲什麼。 我沒有找到另一種方式從drawable導入圖像。 結論: 爲什麼imageResource獲得零希望你能幫助我找到答案

數據庫(ID 0):

db.addFlag(new Flags("afghanistan",0,"Afghanistan")); 
db.addFlag(new Flags("albania",1,"albania")); 
db.addFlag(new Flags("algeria",2,"Algeria")); 

OnCreat

protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_second); 

    ActionBar actionBar = getActionBar();// הכנסת פעולה ל ActionBar 
    actionBar.setDisplayHomeAsUpEnabled(true); 
    score =(TextView)findViewById(R.id.score); // הגדרת כפתורים ושדות טקסטד 
    scorenum =(TextView)findViewById(R.id.scorenum); 
    scorenum.setText(String.valueOf(s.score)); 
    guess =(TextView)findViewById(R.id.guesses); 
    numOfGuess=(TextView)findViewById(R.id.numOfGuesses); 
    numOfGuess.setText(String.valueOf(Guesses.numOfGuesses)); 
    hint =(Button)findViewById(R.id.hint); 
    hint.setOnClickListener(hintOnClickListener); 
    mpHint = MediaPlayer.create(this,R.raw.hint_sound); // הגדרת סאונדים 
    mpNext = MediaPlayer.create(this, R.raw.next_flag); 
    mpWrong = MediaPlayer.create(this, R.raw.wrong_answer); 
    animationfadein = AnimationUtils.loadAnimation(this, R.anim.fade_in);// הגדרת אנימציות 
    animationfadeout = AnimationUtils.loadAnimation(this, R.anim.fade_out); 

    Flags f = new Flags(); 
    Random r = new Random();//הדגל שיבחר לשאלה 
    int num = r.nextInt(160);//Up 

    f = db.getFlag(num);//הצגת הדגל הרנדומלי שיצא 
    fn = f.getName().toString(); 
    pic = f.getImage().toString(); 
    pic_view(pic);//מעבר לפונקציה להשמת התמונה של הדגל במשחק 

    //מערך ארבע כפתורים כנגד ארבע תשובות 

    b[0] = (Button)findViewById(R.id.button1); 
    b[1] = (Button)findViewById(R.id.button2); 
    b[2] = (Button)findViewById(R.id.button3); 
    b[3] = (Button)findViewById(R.id.button4); 

    List<String>Answers=new ArrayList<String>();//מערך תשובות 

    Answers.add(f.getName().toString());//הוספת התשובה הנכונה 
    for(int i=1;i<4;i++) 
    { 
     num = r.nextInt(200); 
     String valToAdd1 = db.getFlag(num).getName().toString(); 
     if(!Answers.contains(valToAdd1)/*&&!valToAdd1.equals("Button")*/){ 
      WrongAnswers.add(valToAdd1); 
      Answers.add(valToAdd1); 
     } 

    } 

    /*if(WrongAnswers.size()<2){ 

    }*/ 

    Collections.shuffle(Answers);//ערבוב התשובות 

    for(int i=0;i<Answers.size();i++) 
    { 
     b[i].setText(Answers.get(i));//השמת התשובות מהמהערך למערך הכפתורים 
     b[i].startAnimation(animationfadein); 
    } 
}//end of OnCreat 

堆棧跟蹤:

04-25 21:21:44.420: D/Result from pic function(16327): burkina 
04-25 21:21:44.420: D/Imageresources(16327): 0 
04-25 21:21:44.420: W/ResourceType(16327): No package identifier when getting value for resource number 0x00000000 
04-25 21:21:44.420: E/ActivityThread(16327): Failed to find resource 
04-25 21:21:44.420: E/ActivityThread(16327): android.content.res.Resources$NotFoundException: Resource ID #0x0 
04-25 21:21:44.420: E/ActivityThread(16327): at android.content.res.Resources.getValue(Resources.java:1195) 
04-25 21:21:44.420: E/ActivityThread(16327): at android.content.res.Resources.getDrawable(Resources.java:729) 
04-25 21:21:44.420: E/ActivityThread(16327): at android.content.res.Resources.getDrawable(Resources.java:711) 
04-25 21:21:44.420: E/ActivityThread(16327): at com.example.flagsgame.ClassicMode.pic_view(ClassicMode.java:221) 
04-25 21:21:44.420: E/ActivityThread(16327): at com.example.flagsgame.ClassicMode.onCreate(ClassicMode.java:82) 
04-25 21:21:44.420: E/ActivityThread(16327): at android.app.Activity.performCreate(Activity.java:5231) 
04-25 21:21:44.420: E/ActivityThread(16327): at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1087) 
04-25 21:21:44.420: E/ActivityThread(16327): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2169) 
04-25 21:21:44.420: E/ActivityThread(16327): at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2271) 
04-25 21:21:44.420: E/ActivityThread(16327): at android.app.ActivityThread.handleRelaunchActivity(ActivityThread.java:3762) 
04-25 21:21:44.420: E/ActivityThread(16327): at android.app.ActivityThread.access$900(ActivityThread.java:144) 
04-25 21:21:44.420: E/ActivityThread(16327): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1211) 
04-25 21:21:44.420: E/ActivityThread(16327): at android.os.Handler.dispatchMessage(Handler.java:102) 
04-25 21:21:44.420: E/ActivityThread(16327): at android.os.Looper.loop(Looper.java:136) 
04-25 21:21:44.420: E/ActivityThread(16327): at android.app.ActivityThread.main(ActivityThread.java:5146) 
04-25 21:21:44.420: E/ActivityThread(16327): at java.lang.reflect.Method.invokeNative(Native Method) 
04-25 21:21:44.420: E/ActivityThread(16327): at java.lang.reflect.Method.invoke(Method.java:515) 
04-25 21:21:44.420: E/ActivityThread(16327): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:796) 
04-25 21:21:44.420: E/ActivityThread(16327): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:612) 
04-25 21:21:44.420: E/ActivityThread(16327): at dalvik.system.NativeStart.main(Native Method) 
04-25 21:21:44.420: D/AndroidRuntime(16327): Shutting down VM 
04-25 21:21:44.420: W/dalvikvm(16327): threadid=1: thread exiting with uncaught exception (group=0x41aeedb8) 
04-25 21:21:44.440: E/AndroidRuntime(16327): FATAL EXCEPTION: main 
04-25 21:21:44.440: E/AndroidRuntime(16327): Process: com.example.flagsgame, PID: 16327 
04-25 21:21:44.440: E/AndroidRuntime(16327): java.lang.RuntimeException: Unable to start activity ComponentInfo{com.example.flagsgame/com.example.flagsgame.ClassicMode}: android.content.res.Resources$NotFoundException: Resource ID #0x0 
04-25 21:21:44.440: E/AndroidRuntime(16327): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2212) 
04-25 21:21:44.440: E/AndroidRuntime(16327): at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2271) 
04-25 21:21:44.440: E/AndroidRuntime(16327): at android.app.ActivityThread.handleRelaunchActivity(ActivityThread.java:3762) 
04-25 21:21:44.440: E/AndroidRuntime(16327): at android.app.ActivityThread.access$900(ActivityThread.java:144) 
04-25 21:21:44.440: E/AndroidRuntime(16327): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1211) 
04-25 21:21:44.440: E/AndroidRuntime(16327): at android.os.Handler.dispatchMessage(Handler.java:102) 
04-25 21:21:44.440: E/AndroidRuntime(16327): at android.os.Looper.loop(Looper.java:136) 
04-25 21:21:44.440: E/AndroidRuntime(16327): at android.app.ActivityThread.main(ActivityThread.java:5146) 
04-25 21:21:44.440: E/AndroidRuntime(16327): at java.lang.reflect.Method.invokeNative(Native Method) 
04-25 21:21:44.440: E/AndroidRuntime(16327): at java.lang.reflect.Method.invoke(Method.java:515) 
04-25 21:21:44.440: E/AndroidRuntime(16327): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:796) 
04-25 21:21:44.440: E/AndroidRuntime(16327): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:612) 
04-25 21:21:44.440: E/AndroidRuntime(16327): at dalvik.system.NativeStart.main(Native Method) 
04-25 21:21:44.440: E/AndroidRuntime(16327): Caused by: android.content.res.Resources$NotFoundException: Resource ID #0x0 
04-25 21:21:44.440: E/AndroidRuntime(16327): at android.content.res.Resources.getValue(Resources.java:1195) 
04-25 21:21:44.440: E/AndroidRuntime(16327): at android.content.res.Resources.getDrawable(Resources.java:729) 
04-25 21:21:44.440: E/AndroidRuntime(16327): at android.content.res.Resources.getDrawable(Resources.java:711) 
04-25 21:21:44.440: E/AndroidRuntime(16327): at com.example.flagsgame.ClassicMode.pic_view(ClassicMode.java:221) 
04-25 21:21:44.440: E/AndroidRuntime(16327): at com.example.flagsgame.ClassicMode.onCreate(ClassicMode.java:82) 
04-25 21:21:44.440: E/AndroidRuntime(16327): at android.app.Activity.performCreate(Activity.java:5231) 
04-25 21:21:44.440: E/AndroidRuntime(16327): at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1087) 
04-25 21:21:44.440: E/AndroidRuntime(16327): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2169) 
04-25 21:21:44.440: E/AndroidRuntime(16327): ... 12 more 
+0

pic2的價值是什麼? –

+0

@GaurawYadav出現的標誌pic = f.getImage()。toString(); – Adi

回答

0

的Javadoc

public int getIdentifier (String name, String defType, String defPackage) 

說:

Returns the associated resource identifier. Returns 0 if no such resource was found. (0 is not a valid resource ID.)

這意味着一些你在數據庫中存儲您的drawable的名稱都是不正確的,不符合你drawable文件夾中有真實姓名。請驗證這些名稱。

+0

非常感謝你會這樣做 – Adi