更改ImageView在不同的活动依赖于按钮按
我正在做一个应用程序,用户可以选择一个设计,然后在下一页输入他们的详细信息。现在,用户可以选择多种设计,然后根据他们选择的设计,该设计将显示为下一页中的预览。为了避免为每个设计分配一个java类,我希望有一个类可以更改预览图像,具体取决于用户选择的设计。更改ImageView在不同的活动依赖于按钮按
目前,我可以更改第二个活动中显示的图像,但无法将图像更改为用户选择的特定设计。
This is what the page looks like where the user chooses their design (named SelectDesign.java)
This is what the preview page looks like (named GarmentEntry.java)
下面是他们选择设计该活动的代码 - SelectDesign.java(我只是为了简单起见前三设计 - 它们都具有相同的基本轮廓)
package com.example.joe.printedclothing;
import android.content.Intent;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.widget.Button;
import android.widget.ImageButton;
import android.widget.ImageView;
public class SelectDesign extends AppCompatActivity {
private static Button HenCockButton, CocktailHenButton, ValueHenButton, XAngelsButton, AlcDisposal, LastNightOfFreedom, BeaverPatrol, Paraletic, FellasOnTour, ValueStag, Wolfpack, PhotoStagHen;
ImageView imagePreviewButton;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.select_design);
HenCockButton = (Button) findViewById(R.id.hencocksthumbB);
HenCockButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Intent henCockIntent = new Intent(SelectDesign.this, GarmentEntry.class);
henCockIntent.putExtra("hen cock parameter", R.drawable.onehenthreechicks);
startActivity(henCockIntent);
}
});
CocktailHenButton = (Button) findViewById(R.id.cocktailhenthumb);
CocktailHenButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Intent cocktailHenIntent = new Intent(SelectDesign.this, GarmentEntry.class);
cocktailHenIntent.putExtra("cocktail hen parameter", R.drawable.cocktailhen);
startActivity(cocktailHenIntent);
}
});
ValueHenButton = (Button) findViewById(R.id.valuehenthumb);
ValueHenButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Intent valueHenIntent = new Intent(SelectDesign.this, GarmentEntry.class);
valueHenIntent.putExtra("Value Hen parameter", R.drawable.valuehen);
startActivity(valueHenIntent);
}
});
下面是他们进入他们的详细资料,并有一个预览活动的代码 - GarmentEntry.java(不包括的东西像纺纱和按钮的代码)
package com.example.joe.printedclothing;
import android.content.Intent;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.widget.AdapterView;
import android.widget.ArrayAdapter;
import android.widget.Button;
import android.widget.ImageView;
import android.widget.Spinner;
public class GarmentEntry extends AppCompatActivity {
Spinner tcshenspinner, backprintoptionsspinner, tcbackhenspinner, cosspinner, ppspinner;
ArrayAdapter<CharSequence> tcshenspinneradapter, backprintoptionsspinneradapter, tcbackhenspinneradapter, cosspinneradapter, ppspinneradapter;
Button nextButton1;
public static ImageView imagePreview;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.garment_entry);
imagePreview = (ImageView) findViewById(R.id.imagePreview);
// Hen cocks
imagePreview.setImageResource(getIntent().getIntExtra("hen cock parameter", R.drawable.onehenthreechicks));
// Cocktail hen
imagePreview.setImageResource(getIntent().getIntExtra("cocktail hen parameter", R.drawable.cocktailhen));
// Value hen
imagePreview.setImageResource(getIntent().getIntExtra("Value Hen parameter", R.drawable.valuehen));
现在,我明白了为什么只有一个图像被传递到下一个活动。代码被顺序读取,所以它读取最后一个值(我认为我在这里是正确的)。但我不知道如何使图像更改取决于用户选择的图像。任何帮助将不胜感激!
它看起来像你的第一个问题是你提供的默认值作为函数getIntExtra()中的实际资源ID。这意味着如果Intent被查询为feild“Value hen parameter”并且发现它为空,它仍然会返回默认值。除此之外,我认为你使用Intent extra的方法是正确的,但是你错误地使用了它。
一个更好的想法是为意图设置一个键,谁的价值将是您想要在第二个活动中显示的图像。例如
public static final String IMAGE_RES_ID = "image_res_id";
private Intent intent = new Intent(SelectDesign.this, GarmentEntry.class);
....
....
....
CocktailHenButton.setOnClick(
....
intent.putExtra(IMAGE_RES_ID, R.drawable.cocktailhen);
startActivity(intent);
}
ValueHenButon.setOnClick(
....
intent.putExtra(IMAGE_RES_ID, R.drawable.valuehen);
startActivity(intent);
,然后在GarmetEntry.class,使用单个语句来填充图像:
imagePreview.setImageResource(getIntent().getIntExtra(SelectDesign.IMAGE_RES_ID, "");
你必须定义图像资源的一个关键的额外费用,如:
public static final String RESOURCE_EXTRA = "resource_extra";
用它来你的资源额外传递给意图启动活动:
henCockIntent.putExtra(RESOURCE_EXTRA, R.drawable.onehenthreechicks);
而在第二个活动,使用此密钥检索资源ID:
imagePreview = (ImageView) findViewById(R.id.imagePreview);
imagePreview.setImageResource(getIntent().getIntExtra(RESOURCE_EXTRA, R.drawable.valuehen)); // of course the default drawable id could be different
您做错了事情是使用不同的您希望传递给下一个活动的额外密钥。有一个imageView需要更改drawable,所以使用一个额外的键,总是用同一个键检索,只需在第一个活动中使用此键放置不同的东西。