我是Android開發人員的新手,我在某一點上阻塞。 我已經執行了一個Android教程,一切都很好,但是我想在我的第二個Activity
上顯示當前選中的ImageView
。檢索並顯示我選擇的ImageView從我的第一個活動到我的第二個活動
這是我第一次Activity
hotel.java
:
public class hotel extends Activity implements View.OnClickListener
{
final String EXTRA_LOGIN = "user_login";
final String EXTRA_PASSWORD = "user_password";
Button button;
int image_index = 0;
private static final int MAX_IMAGE_COUNT=8;
private Integer[]mImageIds ={
R.drawable.image1,
R.drawable.image2,
R.drawable.image3,
R.drawable.image4,
R.drawable.image5,
R.drawable.image6,
R.drawable.image7,
R.drawable.image8,
};
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.hotel);
ImageView imgView = (ImageView) findViewById(R.id.pictogramme);
imgView.setImageResource(mImageIds[image_index]);
BitmapFactory.Options opt = new BitmapFactory.Options();
opt.inScaled = false;
opt.inSampleSize = 1;
opt.inDither = true;
Bitmap bitmap = BitmapFactory.decodeResource(getResources(),mImageIds[image_index] ,opt);
ByteArrayOutputStream baos = new ByteArrayOutputStream();
bitmap.compress(Bitmap.CompressFormat.PNG, 100, baos);
final byte[]b = baos.toByteArray();
final EditText login = (EditText)findViewById(R.id.user_email);
final EditText pass = (EditText)findViewById(R.id.user_password);
final Button loginButton = (Button) findViewById(R.id.connect);
loginButton.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
Intent intent = new Intent(hotel.this, hoteldisplay.class);
intent.putExtra("picture", b);
intent.putExtra(EXTRA_LOGIN, login.getText().toString());
intent.putExtra(EXTRA_PASSWORD,pass.getText().toString());
startActivity(intent);
}
});
Intent intent = getIntent();
Button next = (Button)findViewById(R.id.button_next);
next.setOnClickListener(this);
Button previous = (Button)findViewById(R.id.button_previous);
previous.setOnClickListener(this);
showImage();
}
private void showImage() {
ImageView imgView = (ImageView) findViewById(R.id.pictogramme);
imgView.setImageResource(mImageIds[image_index]);
}
@Override
public void onClick(View v)
{
switch(v.getId())
{
case (R.id.button_previous):
image_index--;
if (image_index == -1){
image_index = MAX_IMAGE_COUNT -1;
}
showImage();
break;
case (R.id.button_next):
image_index++;
if (image_index == MAX_IMAGE_COUNT){
image_index = 0;
}
showImage();
break;
}
}
}
和我的第二個Activity
hoteldisplay.java
:
public class hoteldisplay extends Activity {
final String EXTRA_LOGIN = "user_login";
final String EXTRA_PASSWORD = "user_password";
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.login_display);
Intent intent = getIntent();
Bundle extras = getIntent().getExtras();
byte[] b = extras.getByteArray("picture");
Bitmap bmp = BitmapFactory.decodeByteArray(b, 0, b.length);
ImageView image = (ImageView) findViewById(R.id.image_display);
TextView loginDisplay = (TextView) findViewById(R.id.email_display);
TextView passwordDisplay = (TextView) findViewById(R.id.password_display);
if (intent != null) {
loginDisplay.setText(intent.getStringExtra(EXTRA_LOGIN));
passwordDisplay.setText(intent.getStringExtra(EXTRA_PASSWORD));
image.setImageBitmap(bmp);
}
}
}
目前我找回正確我ImageView
,但是從索引中的第一,我會就像選擇好的圖像一樣。
即使您在用戶按下下一個/上一個按鈕時增加/減少'image_index',您只會創建一次'byte [] b'陣列,因此它只會包含第一個圖像。如果你通過'Intent'中的'mImageIds [image_index]'來啓動'hoteldisplay'並用它來填充'Activity'中的'ImageView',那麼效率會更高。 – Squonk
您好Matt,首先感謝您的回答,正如您所說的,當我在意圖中傳遞mImageIds [image_index]時,效率會更高。我的問題是用這種方法解決,非常感謝你,現在很好;) –