Android将字符串从一个活动发送到另一个活动不起作用

时间:2014-07-24 11:27:18

标签: java android android-intent

我想问一些可能很简单的事情,但我仍然无法找到问题。

我从一个活动向另一个活动发送了一个字符串,但它没有显示任何内容。 我已经多次检查了一下,我认为我的代码没有任何问题。

这是我的第一个java代码(FoodFilter.class)

    listView.setOnItemClickListener(new OnItemClickListener() {

        @Override
        public void onItemClick(AdapterView<?> parent, View view,
                int position, long id) {
            // getting values from selected ListItem
            String name = ((TextView) view.findViewById(R.id.filter_type))
                    .getText().toString();
            String cost = ((TextView) view.findViewById(R.id.item_list))
                    .getText().toString();
            String description = ((TextView) view.findViewById(R.id.category_name))
                    .getText().toString();

            // Starting single contact activity
            Intent in = new Intent(getApplicationContext(),
                    FoodFilterDetail.class);
            in.putExtra(TAG_NAME, name);
            in.putExtra(TAG_EMAIL, cost);
            in.putExtra(TAG_PHONE_MOBILE, description);
            startActivity(in);

        }
    });

这是FoodFilterDetail.class

@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    this.setContentView(R.layout.foods_filterdetail);

    TextView txtProduct = (TextView) findViewById(R.id.filterItemList);

    Intent i = getIntent();
    // getting attached intent data
    String product = i.getStringExtra("TAG_NAME");
    // displaying selected product name
    txtProduct.setText(product);

}

这是我的xml

 
<RelativeLayout
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:background="@android:color/transparent"
    android:layout_marginLeft="7dip"
    android:layout_marginRight="7dip" >

    <TextView 
        android:id="@+id/filterItemList"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:padding="15dip"
        android:layout_alignParentLeft="true"
        android:layout_centerVertical="true"
        android:background="@android:color/transparent"
        android:text="Sort By"
        android:textSize="20sp"
        android:textStyle="bold" />

</RelativeLayout>

我从json parse获取FoodFilter.class上的数据,它运行正常。我可以在ListView上显示所有数据,但是当我将字符串发送到FoodFilterDetail.class时,它没有显示任何内容,并且我的代码中没有错误或警告。

有没有人可以帮我解决这个问题?我一整天都在搜索这个问题。

先谢谢

3 个答案:

答案 0 :(得分:2)

使用i.getStringExtra(TAG_NAME);代替i.getStringExtra("TAG_NAME");

答案 1 :(得分:1)

在FoodFilter.java中创建一个变量

public static final String TAG_NAME = "name";

使用它 在FoodFilter.java中

in.putExtra(TAG_NAME, name);

并在FoodFilterDetail.java中

String product = i.getStringExtra(FoodFilter.TAG_NAME);

对所有其他变量

执行相同操作

答案 2 :(得分:0)

我假设您在第一个活动中定义了TAG_NAME

public static final String TAG_NAME = "some_random_key";

然后你将它设置为Intent的关键字:

in.putExtra(TAG_NAME, name);

在第二个活动中,您试图像这样访问它:

String product = i.getStringExtra("TAG_NAME");

由于密钥不是"TAG_NAME"而是"some_random_key",因此无效。因此,要在第二个活动中访问它,您需要在第二个活动中定义TAG_NAME,就像在第一个活动中一样:

public static final String TAG_NAME = "some_random_key";

然后访问字符串,如:

String product = i.getStringExtra(TAG_NAME);