2013-02-16 77 views
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(); 
     } 
    }); 

的映像路徑線拋出一個錯誤。我應該在這裏放什麼?

這是爲了只顯示所選擇的圖像的活動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"); 

這是否意味着我每次都手動輸入圖像路徑?如果他們選擇不同的圖像怎麼辦?

有沒有人有鏈接到一個實際的工作示例?當我是新手時,僞代碼並不能真正幫助我,並且不知道需要保留什麼以及需要去做什麼。

+0

它拋出什麼錯誤? – lelloman 2013-02-16 19:39:01

+0

試試這個http://stackoverflow.com/questions/8407336/how-to-pass-drawable-between-activities – Pragnani 2013-02-16 19:43:58

+0

這是說它不知道什麼pathToImage和Character_Chosen是。 – Rhendar 2013-02-16 19:51:03

回答

0

我會採取一種替代方法,而不是將路徑傳遞給想要顯示圖像(或稱頭像)的每個活動。
我會將它保存在全局應用程序對象中(通過擴展應用程序),將其加載到內存或圖像路徑中,並在一個地方訪問或更改它並在所有活動中訪問該值。

+0

那麼,如何使用Java代碼而不是XML來設置圖像? – Rhendar 2013-02-16 19:50:07

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) 
} 

同樣的方式可以爲所有剩餘的按鈕來完成。

快樂編碼:)

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是我用過的getIntExtra使用我在MainActivity.java指定讓弓箭手形象的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> 

我希望這有助於。 :)