【问题标题】:How oome I can't get data intent from listview?我怎么无法从列表视图中获取数据意图?
【发布时间】:2013-12-11 11:28:01
【问题描述】:

我无法从列表视图中获取数据。我使用 XML 解析器。这是我在列表视图中的代码。 如果我打算将列表视图用于新活动,则仅显示布局空白。在 logcat 中没有消息。

/**
**/


list.setOnItemClickListener(new OnItemClickListener() {

    @Override
    public void onItemClick(AdapterView<?> adapter, View v, int position, long id) {
        // getting values from selected ListItem
        String headline = ((TextView) v.findViewById(R.id.title)).getText().toString();
        String date = ((TextView) v.findViewById(R.id.date)).getText().toString();

        //Map<String, String> myValueMap = songList.get(position);

        // Starting new intent
        Intent in = new Intent(getApplicationContext(), SingleMenuItemActivity.class);
        in.putExtra(KEY_HEADLINE, headline);
        in.putExtra(KEY_ARTICLEDATE, date);
        startActivity(in);

    }
});

这是我的代码 SingleMenuItemActivity

// XML node keys
static final String KEY_HEADLINE = "Headline";
static final String KEY_ARTICLEDATE = "ArticleDate";
static final String KEY_BODY = "Body";
static final String KEY_IMAGEURL = "ImageURL";
@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.webnews);

    // getting intent data
    Intent in = getIntent();

    // Get XML values from previous intent
    String headline = in.getStringExtra(KEY_HEADLINE);
    String date = in.getStringExtra(KEY_ARTICLEDATE);


    // Displaying all values on the screen
    TextView lblHeadline = (TextView) findViewById(R.id.TextView01);
    TextView lblArticleDate = (TextView) findViewById(R.id.textView02);


    lblHeadline.setText(headline);
    lblArticleDate.setText(date);
    lblBody.setText(Body);
}

【问题讨论】:

  • 键匹配吗?而且您不发送正文
  • 您在headlinedate 中获得了一些价值吗?
  • Body 的值是什么,在哪里声明?

标签: android android-layout android-intent android-listview


【解决方案1】:

我猜你遗漏了身体。

    String Body = ((TextView) v.findViewById(R.id.body)).getText().toString();
    in.putExtra(KEY_BODY, body);

    .....

    String date = in.getStringExtra(KEY_ARTICLEDATE); 
    TextView lblBody= (TextView) findViewById(R.id.textView03);
    lblBody.setText(Body);

【讨论】:

    【解决方案2】:

    putExtra 的键是区分大小写的,请确保两个活动的以下内容相同。正如documentation 所说,您将获得空值而没有任何错误-

    static final String KEY_HEADLINE = "Headline";
    static final String KEY_ARTICLEDATE = "ArticleDate";
    static final String KEY_BODY = "Body";
    static final String KEY_IMAGEURL = "ImageURL";
    

    如果你有 KEY_BODY 从调用活动传递,那么通过意图传递它并从这里的意图访问它。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-11-15
      • 2013-12-22
      • 2017-05-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多