Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/190.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 标记中的数据未正确传递到新活动_Android_Android Activity - Fatal编程技术网

Android 标记中的数据未正确传递到新活动

Android 标记中的数据未正确传递到新活动,android,android-activity,Android,Android Activity,我有一个方法,它获取标签数据并将其发送到另一个活动。 当我在调试器中单步执行此方法时,我可以看到值是预期值 public void ShowView(TextView tv, ImageView iv) { Intent intent = new Intent(this, DisplaySeekAgain.class); String text_tag = tv.getTag().toString(); String image_tag = iv.getTag().toS

我有一个方法,它获取标签数据并将其发送到另一个活动。
当我在调试器中单步执行此方法时,我可以看到值是预期值

public void ShowView(TextView tv, ImageView iv) {
    Intent intent = new Intent(this, DisplaySeekAgain.class);
    String text_tag = tv.getTag().toString();
    String image_tag = iv.getTag().toString();
    intent.putExtra(EXTRA_NAME, text_tag);     //example: "Joe Brown"
    intent.putExtra(EXTRA_IMAGE, image_tag);   //example: "profilePic1"
    startActivity(intent);

}
预期值很好:

  • 文本标签:“乔·布朗”
  • 图像标签:“profilePic1”
但是,在新活动中,文本标记值变为图像标记值

public class DisplaySeekAgain extends AppCompatActivity {

private GoogleApiClient client;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);

    Intent intent = getIntent();
    String message = intent.getStringExtra(MainActivity.EXTRA_NAME);  //example: "profilePic1"
    String image = intent.getStringExtra(MainActivity.EXTRA_IMAGE);   //example: "profilePic1"
预期值错误:

  • message=“profilePic1”
  • image=“profilePic1”
我不确定为什么“消息”字符串没有正确显示。
在我的代码中是否有我正在做的事情可能导致它

预期值很好:

  • text\u tag=“Joe Brown”
  • image\u tag=“profilePic1”
如图所示

intent.putExtra(EXTRA_NAME, text_tag);     //example: "Joe Brown"
intent.putExtra(EXTRA_IMAGE, image_tag);   //example: "profilePic1"
但是,

String message = intent.getStringExtra(MainActivity.EXTRA_NAME);  //example: "profilePic1"

然后,
EXTRA\u NAME.equals(EXTRA\u IMAGE)
,您只需要输入一个额外的值,因此会覆盖以前设置的任何其他值。

putExtra只允许您一次传递一个
字符串。您需要使用
Bundle
来允许将多个
字符串
传递给您的下一个活动。每次打电话时:

intent.putExtra(额外名称、文本标记);
intent.putExtra(额外图像、图像标签)

您正在覆盖intent.putExtra(额外名称、文本标记)带有
意图.putExtra(额外图像、图像标签)

下面的代码应该可以解决这个问题

public void ShowView(TextView tv, ImageView iv) {
String text_tag = tv.getTag().toString();
String image_tag = iv.getTag().toString();

Intent intent = new Intent(this, DisplaySeekAgain.class);
Bundle extras = new Bundle();
extras.putString(EXTRA_NAME, text_tag);     //example: "Joe Brown"
extras.putString(EXTRA_IMAGE, image_tag);   //example: "profilePic1"
intent.putExtras(extras);
startActivity(intent);

}


public class DisplaySeekAgain extends AppCompatActivity {

private GoogleApiClient client;

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
Bundle extras = getIntent().getExtras();

String message = extras.getString(MainActivity.EXTRA_NAME);  //example: "profilePic1"
String image = extras.getString(MainActivity.EXTRA_IMAGE);   //example: "profilePic1"

如果您实际显示了
EXTRA\u NAME
EXTRA\u IMAGE
,则会更容易提供帮助。但它们似乎完全相同。应该有两个变量:
public static final String EXTRA\u NAME=“EXTRA NAME”
public static final String EXTRA\u IMAGE=“EXTRA IMAGE”
。检查这两个字符串的值,值必须不同。