2017-02-24 89 views
0

我在android studio上創建了一個活動,並且在那裏放置了類似於20 ImageButton s的東西。我想將它用作每次點擊圖片時將其移至新活動。所有圖像按鈕的工作原理相同,我的應用程序是一個遊戲,每個圖像代表一個關卡。我想要構建一個將用於所有按鈕的函數,並根據數據(圖像按鈕的屬性)將用戶移動到新的活動,並將這些數據用於新活動。每個級別都有自己的活動,主要活動是遊戲菜單。多個圖像按鈕

下面是我的代碼:

public ImageButton beatsCall; public void Beats(){ beatsCall=(ImageButton)findViewById(R.id.beats); beatsCall.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { Intent toy = new Intent(Levels.this,Beats.class); startActivity(toy); } }); } 
+1

請包括您的代碼。 –

+0

'public ImageButton levelCall; public void CallLevel(){ levelCall =(ImageButton)findViewById(R.id.level1); levelCall.setOnClickListener(新View.OnClickListener(){ @Override 公共無效的onClick(視圖v){ 意圖玩具=新意圖(各級工作,Level1.class); startActivity(玩具); } } ); }' –

+0

你可以編輯問題並將其添加爲原始問題中的代碼。這提高了可讀性和格式。 – skbrhmn

回答

1

您需要提供更多的信息和代碼。但是,您可能想要嘗試設置不同的onClickListener,然後將所有imageButton設置爲將根據單擊的按鈕執行操作的偵聽器。例如,假設您有4個imageButton,並且您想針對每個不同的按鈕點擊執行不同的操作(就您的情況而言,開始一個新的活動)。

View.OnClickListener listener = new View.OnClickListener() { 
    @Override 
    public void onClick(View v) { 
     switch (v.getId()) { 
      case R.id.button1: 
       //Start activity 1 here, for example 
       Intent intent = new Intent(this, YourNewActivity1.class); 
       String message = v.getId().toString; 
       intent.putExtra(EXTRA_MESSAGE, message); 
       startActivity(intent); 
       break; 
      case R.id.textView2: 
       //Start activity 2 here 
       break; 
      case R.id.textView3: 
       //Start activity 3 here 
       break; 
      case R.id.textView4: 
       //Start activity 4 here 
     } 

    } 
}; 

button1.setOnClickListener(listener); 
button2.setOnClickListener(listener); 
button3.setOnClickListener(listener); 
button4.setOnClickListener(listener); 

這是假設你在你的佈局文件中設置了imageButtons,你有他們在你的活動初始化。

在新的活動,你可以得到的消息是這樣的:

Intent intent = getIntent(); 
String message = intent.getStringExtra(MainActivity.EXTRA_MESSAGE); 
if (some condition with message){ 
     do something 
} 

您也可以看看這個documentation的關於意圖的更多信息。

+0

我認爲它可以提供幫助。但我也需要在新活動中使用數據,我的意思是我希望有一項活動會根據ImageButton發送給我的外觀改變它的外觀。 –

+0

您可以使用額外的'intent.putExtra(EXTRA_MESSAGE,message);'將數據發送到您的下一個活動,並根據這些數據,您可以調用不同的片段或在新活動中執行某些操作。 – skbrhmn

+0

我已更新我的答案,包括髮送數據。您可以根據哪個按鈕發送它並在新的活動中使用它來自定義數據。這有幫助嗎? – skbrhmn

0

像這樣的東西?在XML使您的圖片可以點擊的,給他們的ID像這樣...

<ImageView 
      android:id="@+id/level_1_button" 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:clickable="true" 
      /> 

然後調用這樣的功能在活動的onCreate

private void setupButtons() { 
    findViewById(R.id.level_1_button).setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View v) { 
      startActivity(new Intent(getApplication(), LevelOne.class)); 
     } 
    }); 

    findViewById(R.id.level_2_button).setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View v) { 
      startActivity(new Intent(getApplication(), LevelTwo.class)); 
     } 
    }); 
} 
0

你可以通過Android的分配標籤:標籤然後使用您的單個偵聽器切換視圖的標記以分支您想要的行爲。