0

com.musicbynumbers.pianoscales編集:パッケージ名をからに変更したと言ったように、何が悪いのかを理解しましたcom.musicbynumbers.pianoscalesfull。しかし、私は忘れました

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

すべてのコードは良かった。どうもありがとうございました。

わかりました。これは、正確な問題に入る前のちょっとした情報です。私はEclipseを使用しています。私は数週間前に、ライセンスを使用して最初のアプリをPlayストアでピアノスケールアプリとして公開しました。2日前、ライセンスにより、アプリの料金を支払った一部のユーザーがアプリを使用できなくなっていることに気付きました。ライセンスをコメントアウトして更新しましたが、キーストアが破損していました。そこで、ストアからアプリを削除し、パッケージ名を変更しました。アプリは、選択した画像が表示される表示アクティビティに移動するメニューです。もう一度アプリをテストしていると、デフォルトのAndroid画像のみが表示されていることがわかりました。サブメニューのコードや表示アクティビティは機能していたので変更したとは思いませんが、とにかくそれらを上げます。ところで、これは私の最初のアプリであり、アプリは本と一緒に明日リリースされる予定です、

これは、アクティビティ「表示」につながるいくつかのサブメニューの1つです。

    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
4

2 に答える 2

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

于 2013-03-11T18:12:23.450 に答える
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.
これが時間を節約するのに役立つことを願っています。:)

于 2013-03-11T18:16:21.717 に答える