2017-02-24 7 views
0

私はアンドロイドのスタジオでのアクティビティを作成し、私はそこに20のImageButtonのようなものを入れています。私はそれを新しいアクティビティに移動する画像をクリックするたびに使用したいと思います。すべての画像ボタンは同じ原理で動作しています。私のアプリはゲームであり、各画像はレベルを表しています。私は、すべてのボタンで使用される1つの関数を作成し、データ(画像ボタンのプロパティ)に従って新しいアクティビティに移動し、そのデータを新しいアクティビティで使用します。すべてのレベルには独自のアクティビティがあり、主なアクティビティはゲームのメニューです。あなたはより多くの情報とコードを提供する必要が複数の画像ボタン

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; 公共ボイドCallLevel(){ levelCall =(のImageButton)findViewById(R.id.level1)。 levelCall.setOnClickListener(新しいView.OnClickListener(){ @Override公共ボイドのonClick(ビューV){ 意図玩具=新しいテント(Levels.this、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); 

これは、レイアウトファイルにimageButtonが設定されており、アクティビティで初期化されていることを前提としています。あなたの新しい活動で

、次のようなメッセージを取得することができます:

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

あなたはまた、意図に関する更なる情報については、このdocumentationをチェックアウトすることがあります。

+0

私はそれが助けることができると思います。しかし、私は新しいアクティビティでデータを使用する必要があります。つまり、ImageButtonが私にそれを送信したときの外観を変更する1つのアクティビティが必要です。 –

+0

追加の 'intent.putExtra(EXTRA_MESSAGE、message);'を使ってデータをあなたの次のアクティビティに送ることができ、データに基づいて、あなたは別の断片を呼び出すか、新しい活動で何かをすることができます。 – skbrhmn

+0

データの送信を含む回答を更新しました。送信されたボタンに応じてデータをカスタマイズし、新しいアクティビティで使用することができます。これは役に立ちますか? – skbrhmn

0

このような何か?タグに:あなたのXMLであなたの活動のの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

にあなたがアンドロイドを経由して、タグを割り当てることができ、このように関数を呼び出す次に、あなたのイメージがクリック可能にし、彼らにこのようなIDを与える...

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

それぞれのビューを使用して、単一のリスナーを使用して、ビューのタグを切り替えて、必要な動作を分岐します。