0

我有一个活动,用户可以选择他们的角色。我在屏幕上有三个图像按钮,当用户单击他们想要的角色时,我希望游戏加载另一个活动,然后只显示他们在前一个屏幕中选择的角色的图像。基本上这只是我以后要做的事情的先驱。我在这个网站上找到了一些关于如何做到这一点的例子,但我还没有完全解决。

这就是我在角色选择活动中所拥有的:

Button archerButton = (Button) findViewById(R.id.Button_Archer);
archerButton.setOnClickListener(new View.OnClickListener() {
    public void onClick(View v) {
        Intent intent = new Intent(SelectCharacterActivity.this, LevelOneActivity.class);
        intent.putExtra("@drawable/archer", pathToImage);
        startActivity(intent);
        finish();
        }
    });

pathToImage 行抛出错误。我到底应该在这里放什么?

应该只显示所选图像的 LevelOne 活动具有:

    public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE);
    setContentView(R.layout.level_one);



    String path = getIntent().getStringExtra("imagePath");
    Drawable image = Drawable.createFromPath(path);
    Character_Chosen.setImageDrawable(image);
    }

我对这部分也有点困惑。Character_Chosen 条目是应包含所选图像的图像视图的名称。

我也对这行代码感到困惑:

String path = getIntent().getStringExtra("imagePath");

这是否意味着我每次都必须手动输入图像路径?如果他们选择不同的图像怎么办?

有没有人有一个实际工作示例的链接?当我是一个新手并且不知道什么需要留下,什么需要去的时候,伪代码对我的帮助并不大。

4

3 回答 3

0

我会采取另一种方法,而不是将路径传递给您要显示图像(或说头像)的每个活动。
我会将它保存在全局应用程序对象中(通过扩展应用程序)或者加载到内存中的位图或图像路径,然后在一个地方访问或更改它并在所有活动中访问该值。

于 2013-02-16T19:41:06.477 回答
0

我通过采用不同的方法使其运行。

MainActivity.java

我所做的是在意图中传递 R.drawable 引用,而不是使用字符串路径。

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

    btnArcher = (Button)findViewById(R.id.button_archer);

    btnArcher.setOnClickListener(new View.OnClickListener() {
        public void onClick(View v) {
            Intent intent = new Intent(MainActivity.this,LevelOne.class);
            intent.putExtra("archer_drawable", R.drawable.archer);
            startActivity(intent);
        }
     });

}

在 levelOne.java 上,我使用我在 MainActivity.java 中指定的名称使用 getIntExtra 来获取弓箭手图像的 R.drawable 资源引用(您可以指定任何您想要的名称)。最后使用从 getIntExtra 获得的整数值,并通过调用 setImageResource(int resId) 方法在图像视图上使用它。

ImageView img;
int drwResource;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.level_one);

    //find the ImageView fron level_one.xml
    img = (ImageView)findViewById(R.id.character_image);

    drwResource = getIntent().getIntExtra("archer_drawable", -1);   
    img.setImageResource(drwResource);

}

level_one.xml

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent" >
    <ImageView
        android:id="@+id/character_image"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_centerHorizontal="true"
        android:layout_centerVertical="true" />
</RelativeLayout>

我希望这有帮助。:)

于 2013-02-17T00:01:12.890 回答
0

首先将资源转换为id

Button archerButton = (Button) findViewById(R.id.Button_Archer);
archerButton.setOnClickListener(new View.OnClickListener() {
   public void onClick(View v) {

    int id =getResources().getIdentifier("imagename", "drawable", getPackageName());  

    Intent intent = new Intent(SelectCharacterActivity.this, LevelOneActivity.class);
    intent.putExtra("image_id", id);
    startActivity(intent);
    finish();
    }
});

LevelOne.java

public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE);
setContentView(R.layout.level_one);



int imageId=getIntent().getIntExtra("image_id", 0);
Character_Chosen.setImageResource(imageId)
}

可以对所有剩余的按钮执行相同的方法。

快乐编码:)

于 2013-02-16T19:54:31.020 回答