我正在尝试将图像路径从一个活动发送到另一个活动。我正在捕获onResume中的意图,但字符串路径始终为null。我不知道我做错了什么。希望你们可以帮我解决这个问题。
这是我的活动,我抓住图像路径并发送意图。
private Intent testImage = new Intent(this, MyActivity.class);
@Override
public void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.card_create_layout);
testImage = new Intent(this, MyActivity.class);
}
private void grabImage()
{
Intent imageGetter = new Intent(Intent.ACTION_PICK, MediaStore.Images.Media.EXTERNAL_CONTENT_URI);
startActivityForResult(imageGetter, RESULT_LOAD_IMAGE);
}
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data)
{
super.onActivityResult(requestCode, resultCode, data);
if(requestCode == RESULT_LOAD_IMAGE && resultCode == RESULT_OK && null != data)
{
Uri selectedImage = data.getData();
String[] filePathColumn = {MediaStore.Images.Media.DATA};//Array size of 1, and we put in a string
Cursor cursor = getContentResolver().query(selectedImage, filePathColumn, null, null, null);
cursor.moveToFirst();
int columnIndex = cursor.getColumnIndex(filePathColumn[0]);
user_image_path = cursor.getString(columnIndex);//here we have our image path.
cursor.close();
ImageView imageView = (ImageView) findViewById(R.id.imageView);
imageView.setImageBitmap(BitmapFactory.decodeFile(user_image_path));
}
testImage.putExtra("the_image", user_image_path);
}
@Override
public void onClick(View v)
{
switch (v.getId())
{
case R.id.theCreateButton:
grabImage();
break;
case R.id.theDesButton:
startActivity(sendInformation);
}
}
@Override
public void onBackPressed()
{
super.onBackPressed();
MyActivity.checkCard();
setResult(Activity.RESULT_OK, getIntent());
finish();
}
现在在我的其他活动中,当我抓住图像并按回来
@Override
public void onResume()
{
super.onResume();
String ImagePath = getIntent().getStringExtra("the_image");
if(ImagePath == null)
{
Toast.makeText(this,"hello everyone",Toast.LENGTH_LONG).show();
}
}
它继续显示toast消息“hello everyone”,这意味着ImagePath持续为null。我该如何解决这个问题?
答案 0 :(得分:1)
活动之间的传递机制有三种方式:
要避免duplicating answer - 请在stackoverflow中以任何方式搜索(我建议最简单 - via Bundle。)
快速指南:
intent.putExtra(String name, String value)
将字符串放入捆绑包startActivity(intent)
; getIntent().getStringExtra(String name)
方法中的B活动读取值视图OnCreate
中。 活动A和B中的名称值需要相同。这是键。
答案 1 :(得分:1)
我没看到
startActivity(testImage);
如果你没有使用那个意图来启动活动,那么没有额外的名为'the_image',而getStringExtra函数将有效地返回null。
@Override
public void onBackPressed() {
Intent intent = new Intent();
intent.putExtra("the_image", user_image_path);
setResult(RESULT_OK, intent);
super.onBackPressed();
}
如果你已经开始了结果活动,上面是如何正确地做到这一点。