-2

フォーラムを検索していますが、探しているものが見つからないようです... 40 個のボタンを含む xml があります。特定のボタンがクリックされるたびに、新しいアクティビティを開き、クリックされたボタンに応じて contentview を設定したいと考えています。新しいアクティビティを開くのは問題ありませんが、コンテンツビューを正しい画像に設定する方法がわかりません...

私のxmlファイル:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical" >

    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_marginLeft="@dimen/margin_regular"
        android:layout_marginRight="@dimen/margin_regular"
        android:layout_marginTop="3dp"
        android:orientation="horizontal" >

        <ImageView
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:src="@drawable/chromatic_scale_bflat" />
    </LinearLayout>

    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_marginTop="3dp"
        android:orientation="horizontal" >

        <Button
            android:id="@+id/btn_bes1"
            android:layout_width="54dp"
            android:layout_height="40dp"
            android:text="@string/bes"
            android:textSize="@dimen/button_textsize" />

        <Button
            android:id="@+id/btn_b1"
            android:layout_width="54dp"
            android:layout_height="40dp"
            android:text="@string/b"
            android:textSize="@dimen/button_textsize" />

        <Button
            android:id="@+id/btn_c1"
            android:layout_width="54dp"
            android:layout_height="40dp"
            android:text="@string/c"
            android:textSize="@dimen/button_textsize" />

        <Button
            android:id="@+id/btn_cis1"
            android:layout_width="54dp"
            android:layout_height="40dp"
            android:text="@string/cis"
            android:textSize="@dimen/button_textsize" />

        <Button
            android:id="@+id/btn_d1"
            android:layout_width="54dp"
            android:layout_height="40dp"
            android:text="@string/d"
            android:textSize="@dimen/button_textsize" />

        <Button
            android:id="@+id/btn_dis1"
            android:layout_width="54dp"
            android:layout_height="40dp"
            android:text="@string/dis"
            android:textSize="@dimen/button_textsize" />
    </LinearLayout>

    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_marginTop="1dp"
        android:orientation="horizontal" >

        <Button
            android:layout_width="54dp"
            android:layout_height="40dp"
            android:text="@string/e"
            android:textSize="@dimen/button_textsize" />

        <Button
            android:layout_width="54dp"
            android:layout_height="40dp"
            android:text="@string/f"
            android:textSize="@dimen/button_textsize" />

        <Button
            android:layout_width="54dp"
            android:layout_height="40dp"
            android:text="@string/fis"
            android:textSize="@dimen/button_textsize" />

        <Button
            android:layout_width="54dp"
            android:layout_height="40dp"
            android:text="@string/g"
            android:textSize="@dimen/button_textsize" />

        <Button
            android:layout_width="54dp"
            android:layout_height="40dp"
            android:text="@string/gis"
            android:textSize="@dimen/button_textsize" />

        <Button
            android:layout_width="54dp"
            android:layout_height="40dp"
            android:text="@string/a"
            android:textSize="@dimen/button_textsize" />
    </LinearLayout>

    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_marginTop="15dp" >

        <ImageView
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:src="@drawable/chromatic_scale_bflat" />
    </LinearLayout>

    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="40dp"
        android:layout_marginTop="3dp"
        android:orientation="horizontal" >

        <Button
            android:layout_width="54dp"
            android:layout_height="40dp"
            android:text="@string/bes"
            android:textSize="@dimen/button_textsize" />

        <Button
            android:layout_width="54dp"
            android:layout_height="40dp"
            android:text="@string/b"
            android:textSize="@dimen/button_textsize" />

        <Button
            android:layout_width="54dp"
            android:layout_height="40dp"
            android:text="@string/c"
            android:textSize="@dimen/button_textsize" />

        <Button
            android:layout_width="54dp"
            android:layout_height="40dp"
            android:text="@string/cis"
            android:textSize="@dimen/button_textsize" />

        <Button
            android:layout_width="54dp"
            android:layout_height="40dp"
            android:text="@string/d"
            android:textSize="@dimen/button_textsize" />

        <Button
            android:layout_width="54dp"
            android:layout_height="40dp"
            android:text="@string/dis"
            android:textSize="@dimen/button_textsize" />
    </LinearLayout>

    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="40dp"
        android:layout_marginTop="1dp"
        android:orientation="horizontal" >

        <Button
            android:layout_width="54dp"
            android:layout_height="40dp"
            android:text="@string/e"
            android:textSize="@dimen/button_textsize" />

        <Button
            android:layout_width="54dp"
            android:layout_height="40dp"
            android:text="@string/f"
            android:textSize="@dimen/button_textsize" />

        <Button
            android:layout_width="54dp"
            android:layout_height="40dp"
            android:text="@string/fis"
            android:textSize="@dimen/button_textsize" />

        <Button
            android:layout_width="54dp"
            android:layout_height="40dp"
            android:text="@string/g"
            android:textSize="@dimen/button_textsize" />

        <Button
            android:layout_width="54dp"
            android:layout_height="40dp"
            android:text="@string/gis"
            android:textSize="@dimen/button_textsize" />

        <Button
            android:layout_width="54dp"
            android:layout_height="40dp"
            android:text="@string/a"
            android:textSize="@dimen/button_textsize" />
    </LinearLayout>

    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_marginTop="15dp" >

        <ImageView
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:src="@drawable/chromatic_scale_bflat" />
    </LinearLayout>

    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_marginTop="3dp"
        android:orientation="horizontal" >

        <Button
            android:layout_width="54dp"
            android:layout_height="40dp"
            android:text="@string/bes"
            android:textSize="@dimen/button_textsize" />

        <Button
            android:layout_width="54dp"
            android:layout_height="40dp"
            android:text="@string/b"
            android:textSize="@dimen/button_textsize" />

        <Button
            android:layout_width="54dp"
            android:layout_height="40dp"
            android:text="@string/c"
            android:textSize="@dimen/button_textsize" />

        <Button
            android:layout_width="54dp"
            android:layout_height="40dp"
            android:text="@string/cis"
            android:textSize="@dimen/button_textsize" />

        <Button
            android:layout_width="54dp"
            android:layout_height="40dp"
            android:text="@string/d"
            android:textSize="@dimen/button_textsize" />

        <Button
            android:layout_width="54dp"
            android:layout_height="40dp"
            android:text="@string/dis"
            android:textSize="@dimen/button_textsize" />
    </LinearLayout>

    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="40dp"
        android:layout_marginTop="1dp"
        android:orientation="horizontal" >

        <Button
            android:layout_width="54dp"
            android:layout_height="40dp"
            android:text="@string/e"
            android:textSize="@dimen/button_textsize" />

        <Button
            android:layout_width="54dp"
            android:layout_height="40dp"
            android:text="@string/f"
            android:textSize="@dimen/button_textsize" />

        <Button
            android:layout_width="54dp"
            android:layout_height="40dp"
            android:text="@string/fis"
            android:textSize="@dimen/button_textsize" />

        <Button
            android:layout_width="54dp"
            android:layout_height="40dp"
            android:text="@string/g"
            android:textSize="@dimen/button_textsize" />

        <Button
            android:layout_width="54dp"
            android:layout_height="40dp"
            android:text="@string/gis"
            android:textSize="@dimen/button_textsize" />

        <Button
            android:layout_width="54dp"
            android:layout_height="40dp"
            android:text="@string/a"
            android:textSize="@dimen/button_textsize" />
    </LinearLayout>

</LinearLayout>

私のJavaファイル:

package com.example.saxofoonnieuw;

import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;

public class FingeringChart extends Activity implements OnClickListener {

    Button bes1, b1, c1;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        // TODO Auto-generated method stub
        super.onCreate(savedInstanceState);
        setContentView(R.layout.fingering_chart);

        bes1 = (Button) findViewById(R.id.btn_bes1);
        bes1.setOnClickListener(this);
    }

    @Override
    public void onClick(View v) {
        switch (v.getId()) {
        case R.id.btn_bes1:
            Intent a = new Intent(this, PictureFingeringChart.class);
            startActivity(a);

            break;

        default:
            break;
        }
    }

}
4

5 に答える 5

1

Intent に追加情報をそのまま追加する必要があります。

コードで image_name String 変数をインテントに渡します。

@Override
public void onClick(View v) {
    switch (v.getId()) {
    case R.id.btn_bes1:
        Intent a = new Intent(this, PictureFingeringChart.class);
        String strName = "image_2"; // this variable changes for each button
        a.putExtra("image_name", strName);
        startActivity(a);

        break;

    default:
        break;
    }
}

次に、宛先アクティビティで変数名を取得します。

@Override
protected void onCreate(Bundle savedInstanceState) {
    // TODO Auto-generated method stub
    super.onCreate(savedInstanceState);
    setContentView(R.layout.fingering_chart);

    Intent intent = getIntent();
    String image_name = intent.getStringExtra("image_name");

    // now you have the image_name and you can go on... 

    // 1st get the reference to your ImageView :
    ImageView img = (ImageView) findViewById(R.id.image);
    // 2nd assume you pass as string param the name of the drawable, in this example, regarding previous code, we would like to load image_2.png, so we retrieve the corresponding resource ID like this :
    int resourceID = getResources().getIdentifier(image_name , "drawable", getPackageName());
    // 3rd then we assign it to our ImageView :
    img.setImageResource(resourceID);
    // 4th done!
}
于 2015-02-18T06:08:08.967 に答える
0

アクティビティにバンドルを渡すことができます

bundle.putByte("info", 1);
startActivity(new Intent(this, PictureFingeringChart.class).putExtras(bundle));

PictureFingeringChart.class の onCreate メソッドで

Bundle bundle = this.getIntent().getExtras();
        byte info = bundle.getByte("info");
于 2015-02-18T06:06:41.357 に答える
0

これを試してみてください...

FingeringChart.java

public static final IMAGE="package-name image id";
public class FingeringChart extends Activity implements OnClickListener {

Button bes1, b1, c1;

@Override
protected void onCreate(Bundle savedInstanceState) {
    // TODO Auto-generated method stub
    super.onCreate(savedInstanceState);
    setContentView(R.layout.fingering_chart);

    bes1 = (Button) findViewById(R.id.btn_bes1);
    bes1.setOnClickListener(this);
}

@Override
public void onClick(View v) {
    switch (v.getId()) {
    case R.id.btn_bes1:
        Intent a = new Intent(this, PictureFingeringChart.class);
        intent.putExtra(IMAGE,R.drawable.image1);
        startActivity(a);

        break;

    default:
        break;
    }
}

}

PictureFingeringChart.java

public class Test extends Activity{

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);

    int image = getIntent().getIntExtra(FingeringChart.IMAGE,0);
    ImageView imageView = new ImageView(this);
    imageView.setImageDrawable(getResources().getDrawable(image));
    setContentView(imageView);
}
}

それが役に立てば幸い...

于 2015-02-18T06:18:08.423 に答える
0

これを変更します:

@Override
public void onClick(View v) {
    switch (v.getId()) {
    case R.id.btn_bes1:
        Intent a = new Intent(this, PictureFingeringChart.class);
        int img_ID = R.id.your_image;
        a.putExtra("EXTRA_ID", img_ID);
        startActivity(a);
        break;

    default:
        break;
    }
}

PictureFingeringChart.class で:

 @Override
protected void onCreate(Bundle savedInstanceState) {
  super.onCreate(savedInstanceState);
  Bundle extras = getIntent().getExtras();
  if (extras != null) {
   int id = extras.get("EXTRA_ID");
   if (id!= null) {
        // setContentView or set your image here
   }        
}

毎回異なるアクティビティを呼び出すため、それぞれのアクティビティに対して異なるレイアウト ファイルを持つことができます。

于 2015-02-18T06:11:57.670 に答える