我正在尝试拥有一系列图像按钮,当单击一个按钮时,它会将用户发送到带有该图像的不同页面。我可以在第一个屏幕上加载所有图像,但不知道如何在单击图像后将其显示在第二个屏幕上。谁能帮我?
要从一个活动导航到另一个活动,在 android 中我们Intent
类。我们还可以通过 Intent
.
因此,基本上,您需要将意图从主活动发送到第二个活动,以便显示第二个活动。除了意图,您还需要附加数据。本例中的数据是图像的文件名(资源名称)。
看看这段代码。
您有两个图像按钮的主要活动。
public class mainActivity extends ActionBarActivity {
ImageButton imageButton1;
ImageButton imageButton2;
@Override
void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
imageButton1 = (ImageButton)findViewById(R.id.ib1);
imageButton2 = (ImageButton)findViewById(R.id.ib2);
imageButton1.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Intent intent = new Intent(getActivity(),SecondActivity.class);
intent.putExtra("USE_A_CONSTANT_HERE_AS_KEY", R.drawable.img1);
startActivity(intent);
}
});
imageButton2.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Intent intent = new Intent(getActivity(),SecondActivity.class);
intent.putExtra("USE_A_CONSTANT_HERE_AS_KEY", R.drawable.img2);
startActivity(intent);
}
});
}
}
现在是要显示图像的第二个活动。
public class SecondActivity extends ActionBarActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_second);
ImageView imageView = (ImageView)findViewById(R.id.iv);
int resourceId = getIntent.getIntentExtra("USE_A_CONSTANT_HERE_AS_KEY",R.drawable.ic_launcher)
imageView.setImageResource(resourceId);
}
}
现在,第二个活动"activity_second"的 XML 布局文件是我为 xml 文件指定的名称。
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent">
<ImageView
android:id="@+id/iv"
android:layout_width="300dp"
android:layout_height="300dp"/>
</RelativeLayout>
现在只是澄清一下,getIntent.getIntExtra("USE_A_CONSTANT_HERE_AS_KEY",R.drawable.ic_launcher)
Intents 中使用 putExtra()
和 getExtra()
方法的第一个参数首先是键,第二个参数是值。
最好将键声明为常量。
如果您像R.drawable.myimage
这样的文件夹中将资源设置为drawable
按钮,这就是您需要做的:
制定意图并输入图像的ID(按钮图像或您需要的内容)
imageButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Intent in = new Intent(getActivity(),Test.class);
in.putExtra("id", R.drawable.google);
startActivity(in);
}
});
测试活动类:在此类中,您缓存意图并通过意图中的图像"ID"创建 setImageResource。
public class Test extends ActionBarActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_test);
ImageView test = (ImageView)findViewById(R.id.iv_test);
test.setImageResource(getIntent().getIntExtra("id",R.drawable.ic_launcher));
}
.XML:
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent"
android:layout_height="match_parent" android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
android:paddingBottom="@dimen/activity_vertical_margin"
tools:context="studio.linkup.com.animation_view.Test">
<TextView android:text="@string/hello_world" android:layout_width="wrap_content"
android:layout_height="wrap_content" />
<ImageView
android:layout_width="200dp"
android:layout_height="200dp"
android:id="@+id/iv_test" />