2013-03-11 6 views
0

EDIT: Я выяснил, что, если что-то не так, как я уже сказал, я изменил название пакета с com.musicbynumbers.pianoscales до com.musicbynumbers.pianoscalesfull. Но я забылAndroid: фотографии не отображаются на фото. Активность

change int id =getResources().getIdentifier("com.musicbynumbers.pianoscalesfull:drawable/" + gotScale, null, null);

Весь код был хорош. Большое спасибо за вашу помощь.

Хорошо, это только некоторые данные beckground, прежде чем я попаду в точную проблему: Я использую eclipse. Несколько недель назад я опубликовал свое первое приложение для игры на фортепиано в игровом магазине с лицензированием. Два дня назад я понял, что лицензирование помешало некоторым пользователям, которые заплатили за использование приложения. Я прокомментировал лицензию и пошел обновляться, но мое хранилище ключей было повреждено. Поэтому я удалил приложение из магазина и изменил имя пакета. Приложение представляет собой меню, которое выводит на экран действие, на котором отображается выбранное изображение. Пока я тестировал приложение, я обнаружил, что отображается только изображение по умолчанию для Android. Я не думаю, что я изменил какой-либо код в подменю или активность отображения, так как он работал, но я все равно их подниму. Кстати, это мое первое приложение, и приложение будет выпущено завтра, чтобы сопровождать книгу, поэтому для меня это реальная ситуация в 11 часов.

Это один из нескольких подменю х, что приводит к деятельности «дисплей»

package com.musicbynumbers.scales; 



import android.os.Bundle; 
import android.app.Activity; 
import android.content.Intent; 
import android.graphics.PixelFormat; 
import android.view.View; 
import android.view.WindowManager; 
import android.widget.Button; 
import android.widget.ImageButton; 
import com.musicbynumbers.pianoscalesfull.R; 

public class majorScales extends Activity implements View.OnClickListener { 
    Button aflatmaj, amaj, bflatmaj, bmaj, cmaj, dflatmaj, dmaj, eflatmaj, emaj, fmaj, fsharpmaj, gmaj; 
    ImageButton mainMenu; 
    Intent j; 
    String scaleName; 
    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     // TODO Auto-generated method stub 
     super.onCreate(savedInstanceState); 
     getWindow().setFormat(PixelFormat.RGBA_8888); 
     getWindow().addFlags(WindowManager.LayoutParams.FLAG_DITHER); 
     setContentView(R.layout.majorscales); 
     j = new Intent(this, display.class); 
     mainMenu = (ImageButton) findViewById(R.id.imagelogo); 
     aflatmaj = (Button) findViewById(R.id.aflatmajb); 
     amaj = (Button) findViewById(R.id.amajb); 
     bflatmaj = (Button) findViewById(R.id.bflatmajb); 
     bmaj = (Button) findViewById(R.id.bmajb); 
     cmaj = (Button) findViewById(R.id.cmajb); 
     dflatmaj = (Button) findViewById(R.id.dflatmajb); 
     dmaj = (Button) findViewById(R.id.dmajb); 
     eflatmaj = (Button) findViewById(R.id.eflatmajb); 
     emaj = (Button) findViewById(R.id.emajb); 
     fmaj = (Button) findViewById(R.id.fmajb); 
     fsharpmaj = (Button) findViewById(R.id.fsharpmajb); 
     gmaj = (Button) findViewById(R.id.gmajb); 
     mainMenu.setOnClickListener(this); 
     aflatmaj.setOnClickListener(this); 
     amaj.setOnClickListener(this); 
     bflatmaj.setOnClickListener(this); 
     bmaj.setOnClickListener(this); 
     cmaj.setOnClickListener(this); 
     dflatmaj.setOnClickListener(this); 
     dmaj.setOnClickListener(this); 
     eflatmaj.setOnClickListener(this); 
     emaj.setOnClickListener(this); 
     fmaj.setOnClickListener(this); 
     fsharpmaj.setOnClickListener(this); 
     gmaj.setOnClickListener(this); 



    } 






     @Override 
      public void onClick(View arg0) { 
       // TODO Auto-generated method stub 
       switch(arg0.getId()){ 
       case R.id.imagelogo: 
        Intent i = new Intent(majorScales.this, MainMenu.class); 
        startActivity(i); 
        break; 
       case R.id.aflatmajb: 
        scaleName = "aflatmaj"; 
        j.putExtra("key", scaleName); 

        startActivity(j); 
        break; 
       case R.id.amajb: 
        scaleName = "amaj"; 
        j.putExtra("key", scaleName); 
        startActivity(j); 
        break; 
       case R.id.bflatmajb: 
        scaleName = "bflatmaj"; 
        j.putExtra("key", scaleName); 
        startActivity(j); 
        break; 
       case R.id.bmajb: 
        scaleName = "bmaj"; 
        j.putExtra("key", scaleName); 
        startActivity(j); 
        break; 
       case R.id.cmajb: 
        scaleName = "cmaj"; 
        j.putExtra("key", scaleName); 
        startActivity(j); 
        break; 
       case R.id.dflatmajb: 
        scaleName = "dflatmaj"; 
        j.putExtra("key", scaleName); 
        startActivity(j); 
        break; 
       case R.id.dmajb: 
        scaleName = "dmaj"; 
        j.putExtra("key", scaleName); 
        startActivity(j); 
        break; 
       case R.id.eflatmajb: 
        scaleName = "eflatmaj"; 
        j.putExtra("key", scaleName); 
        startActivity(j); 
        break; 
       case R.id.emajb: 
        scaleName = "emaj"; 
        j.putExtra("key", scaleName); 
        startActivity(j); 
        break; 
       case R.id.fmajb: 
        scaleName = "fmaj"; 
        j.putExtra("key", scaleName); 
        startActivity(j); 
        break; 
       case R.id.fsharpmajb: 
        scaleName = "fsharpmaj"; 
        j.putExtra("key", scaleName); 
        startActivity(j); 
        break; 
       case R.id.gmajb: 
        scaleName = "gmaj"; 
        j.putExtra("key", scaleName); 
        startActivity(j); 
        break; 




    } 

} 
} 

Это отображение активности, где отображается выбранное изображение, но только отображается теперь используется по умолчанию.

package com.musicbynumbers.scales; 

import android.app.Activity; 
import android.os.Bundle; 
import android.widget.ImageView; 
import com.musicbynumbers.pianoscalesfull.R; 


public class display extends Activity { 

    ImageView displayScale; 
    String gotScale; 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     // TODO Auto-generated method stub 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.display); 
     Initalize(); 
     gotScale = getIntent().getStringExtra("key"); 
     ImageView displayScale = (ImageView) findViewById(R.id.displayImage); 
     //aflatmaj-gotscale 
     int id = getResources().getIdentifier("com.musicbynumbers.pianoscales:drawable/" + gotScale, null, null); 
     displayScale.setImageResource(id); 

    } 

    private void Initalize() { 
     // TODO Auto-generated method stub 
     displayScale = (ImageView) findViewById(R.id.displayImage); 
     gotScale = "ic_launcher.png"; 

    }} 

Я очень ценю любую помощь, потому что у меня заканчивается время.

Edit:

Logcat:

03-11 18:38:00.194: I/ActivityManager(59): Starting activity: Intent { cmp=com.musicbynumbers.pianoscalesfull/com.musicbynumbers.scales.majorScales } 
03-11 18:38:00.824: W/ActivityManager(59): Activity pause timeout for HistoryRecord{45f03618 com.musicbynumbers.pianoscalesfull/com.musicbynumbers.scales.MainMenu} 
03-11 18:38:03.284: I/ActivityManager(59): Displayed activity com.musicbynumbers.pianoscalesfull/com.musicbynumbers.scales.majorScales: 2454 ms (total 2454 ms) 
03-11 18:38:07.854: I/ActivityManager(59): Starting activity: Intent { cmp=com.musicbynumbers.pianoscalesfull/com.musicbynumbers.scales.display (has extras) } 
03-11 18:38:08.234: I/WindowManager(59): Setting rotation to 1, animFlags=1 
03-11 18:38:08.404: I/ActivityManager(59): Config changed: { scale=1.0 imsi=310/260 loc=en_US touch=3 keys=2/1/2 nav=3/1 orien=2 layout=18 uiMode=17 seq=32} 
03-11 18:38:09.616: I/ActivityManager(59): Displayed activity com.musicbynumbers.pianoscalesfull/com.musicbynumbers.scales.display: 1384 ms (total 1384 ms) 
03-11 18:38:13.123: D/dalvikvm(59): GC_EXPLICIT freed 3329 objects/183760 bytes in 462ms 

ответ

0

Я не понимаю:

В деятельности дисплея у вас есть: ImageView displayScale; объявлены в начале, а затем вы объявляете его снова: ImageView displayScale = (ImageView) findViewById(R.id.displayImage);

И эта проблема главным образом среди других причин, потому что у вас есть Initalize(); там происходит.

, если вы говорите, что вы ничего не reciving но андроида изображение по умолчанию, то, очевидно

gotScale = getIntent().getStringExtra("key"); 

не работает, и все, что осталось, это: gotScale = "ic_launcher.png"; от инициализации.

Попробуйте ввести параметр gotScale прямо перед тем, как получить изображение в зависимости от него, чтобы посмотреть, что он держит.

EDIT:

Для входа:

Log.d ("ActivityName", "сообщение, которое вы хотите показать");

и следить за вашим логарифмом, используя cmd, чтобы увидеть сообщение журнала.

или вы всегда можете показать тост, чтобы узнать, что является содержимым gotScale.

+0

Я вижу, что Iv'e изменил второй в oncreate на displayScale = (ImageView) findViewById (R.id.displayImage); и im тестировать его на эмуляторе –

+0

Просто попробовал, он все еще просто показывает изображение по умолчанию. –

+0

см. Обновленный ответ. –

0

Я не проверял код с моей стороны. Поэтому вы можете принять это за предложение. После проверки вашего кода кажется

int id = getResources().getIdentifier("com.musicbynumbers.pianoscales:drawable/" + gotScale, null, null); 
     displayScale.setImageResource(id);
выглядит странно. Можете ли вы зарегистрировать возвращаемый идентификатор и проверить его.

// Хорошая замена, которую вы даже можете попробовать. // получить значки


    String uri = "drawable/"+gotScale; 
int id = getResources().getIdentifier(uri, "drawable", getPackageName()); // your res id. 
Надеюсь, это поможет вам сэкономить время. :)

+0

что-то нужно делать в «drawable» или просто так просто. Это может показаться совершенно очевидным, но я относительно новый. И регистрируя идентификатор, вы имеете в виду копию этого раздела журнала? –

+0

что-то нужно делать в «drawable» или просто оставлено так. Это может показаться совершенно очевидным, но я относительно новый. И регистрируя идентификатор, вы имеете в виду копию этого раздела журнала? –

+0

Я добавил logcat к основному вопросу –

Смежные вопросы