Java Android:照片显示活动中未显示照片

Java Android:照片显示活动中未显示照片,java,android,Java,Android,编辑:我知道出了什么问题,就像我说的,我把包名从com.musicbynumbers.pianoscales改为com.musicbynumbers.pianoscalesfull。但是我忘了 change int id=getResources().getIdentifier(“com.musicbynumbers.pianoscalesfull:drawable/”+gotScale,null,null) 所有的代码都很好。非常感谢你的帮助 好的,这只是一些beckground的信息,在我进

编辑:我知道出了什么问题,就像我说的,我把包名从
com.musicbynumbers.pianoscales
改为
com.musicbynumbers.pianoscalesfull
。但是我忘了

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

所有的代码都很好。非常感谢你的帮助

好的,这只是一些beckground的信息,在我进入确切的问题之前: 我正在使用eclipse。几周前,我在play store上发布了我的第一个应用程序——钢琴音阶应用程序,并获得了许可。两天前,我意识到许可证阻止了一些付费用户使用它。我注释掉了许可证并进行了更新,但我的密钥库已损坏。因此,我从商店中删除了应用程序并更改了软件包名称。该应用程序是一个菜单,可让您进入显示所选图像的显示活动。当我再次测试应用程序时,我发现只显示默认的android图像。我不认为我改变了子菜单中的任何代码或显示活动,因为它正在工作,但我会把他们无论如何。顺便说一句,这是我的第一个应用程序,该应用程序将于明天随书发布,所以这对我来说是一个真实的11小时情况

这是导致活动“显示”的几个子菜单之一

这是显示活动,其中显示选定图像,但现在仅显示默认图像

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

    }}
我真的很感谢你的帮助,因为我的时间不多了

编辑:

日志:

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
我不明白:

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

这主要是一个问题,因为你得到了Initalize();就在那里

如果你说除了默认的安卓图像,你什么都没有收到,那么很明显

gotScale = getIntent().getStringExtra("key");
不工作,剩下的就是:
gotScale=“ic_launcher.png”来自初始化

在获取图像之前,请尝试记录
gotScale
参数,以查看图像的内容

编辑:

要记录:

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

并使用cmd监视日志猫以查看日志消息


或者,您也可以向大家敬酒,看看gotScale的内容是什么,我还没有从我这边测试代码。所以你可以把它当作一个建议。在检查代码之后,它看起来很奇怪。您能否记录返回的标识符并对其进行验证

//一个很好的替代品,你甚至可以试试。 //获取图标
希望这将帮助您节省一些时间。:)

我看到,Iv'e将oncreate中的第二个更改为displayScale=(ImageView)findViewById(R.id.displayImage);我在模拟器上测试它,“在你得到图像之前,试着记录gotScale参数,看看它能保存什么。”我该怎么做?抱歉,我是新来的。当我点击amajb后,它给出了“amaj”,这样正确的数据就进入了gotData。我发现了什么问题,就像我说的,我把包名从com.musicbynumbers.pianoscales改为com.musicbynumbers.pianoscalesfull。但是我忘了更改int id=getResources().getIdentifier(“com.musicbynumbers.pianoscalesfull:drawable/”+gotScale,null,null);所有的代码都很好。非常感谢你的帮助。有什么东西需要放在“drawable”里吗?还是就这样放着。这似乎很明显,但我相对来说是新来的。记录标识符,你的意思是复制日志猫的那一部分吗?是否需要在“drawable”中输入任何内容,还是只保留这样的内容。这似乎很明显,但我相对来说是新来的。记录标识符你的意思是复制日志猫的那一部分吗?我把日志猫添加到了主要问题中我发现了什么问题,就像我说的,我把包名从com.musicbynumbers.pianoscales改为com.musicbynumbers.pianoscalesfull。但是我忘了更改int id=getResources().getIdentifier(“com.musicbynumbers.pianoscalesfull:drawable/”+gotScale,null,null);所有的代码都很好。非常感谢您的帮助。很高兴知道您找到了解决方案。无论如何,这里的日志记录意味着在日志中检查您的id,并匹配它是否调用了所需的id。你早就知道问题出在哪里了。干杯
gotScale = getIntent().getStringExtra("key");
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.