Android:图片未显示在照片显示活动中

时间:2013-03-11 17:49:15

标签: java android

编辑:我弄清楚出了什么问题,就像我说我将包名改为com.musicbynumbers.pianoscalescom.musicbynumbers.pianoscalesfull。但我忘了

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";

    }}

我非常感谢任何帮助,因为我已经没时间了。

编辑:

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

2 个答案:

答案 0 :(得分:0)

我不明白:

在显示活动中,您:ImageView displayScale;在开头宣布,然后再次声明:ImageView displayScale = (ImageView) findViewById(R.id.displayImage);

这个问题主要是因为你得到了Initalize();去那儿。

如果你说你没有收到任何东西,除了默认的Android图像,那么显然

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

无法正常工作,剩下的就是:gotScale = "ic_launcher.png";来自初始化。

尝试在获取图像之前记录gotScale参数,具体取决于它,看看它是什么。

修改

要记录:

Log.d(“ActivityName”,“您要显示的消息”);

使用cmd监视logcat以查看日志消息。

或者您可以随时显示祝酒词,以查看gotScale的内容。

答案 1 :(得分: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.
希望这能帮助您节省一些时间。 :)