我一直在寻找论坛,但似乎无法找到我正在寻找的东西...... 我有一个带有40个按钮的xml。 每当单击特定按钮时,我想打开一个新活动,并根据单击的按钮设置内容视图。 打开新活动没问题,但我无法弄清楚如何将内容视图设置为正确的图像......
我的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;
}
}
}
答案 0 :(得分:1)
您应该按原样在Intent中添加额外信息:
在您的代码中将image_name字符串变量传递给您的意图:
@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!
}
答案 1 :(得分:1)
修改您的通话活动
活性1
//initial part
@Override
public void onClick(View v) {
Intent a = new Intent(this, PictureFingeringChart.class);
switch (v.getId()) {
case R.id.btn_bes1:
a.putExtra("outputtodisplay",R.layout.viewToDisplay);
break;
default:
break;
}
startActivity(a);
}
并在您的被叫活动中
//活动2
protected void onCreate(){
super.onCreate()
setContentView(a.getIntExtra("outputtodisplay",R.layout.default_layout),
}
答案 2 :(得分: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");
答案 3 :(得分: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
}
}
由于每次调用不同的活动,因此可以为相应的活动设置不同的布局文件。
答案 4 :(得分: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);
}
}
希望它有所帮助...