我目前正在尝试获取通过REST API调用获取的数据,解析它以获取所需的信息,然后将该信息传递给新Activity。我正在使用www.example.com上的异步HTTP客户loopj.com作为REST客户端,然后将下面的代码分别用于当前Activity和未来Activity的onClick
和onCreate
。
Eclipse不会为我的任何代码传递任何错误,但是当我尝试在模拟器中运行时,什么也得不到(即白色)。我曾尝试在REST客户端中使用不同的URL进行编码,但是我仍然什么也没看到。我甚至通过注解掉try/catch并将bundle.putString("VENUE_NAME", venueName);
中的venueName
更改为searchTerm
。新视图仍然出现,但没有显示任何内容。没有传递什么内容,或者我忘记了让第二个活动显示venueName
?
public void onClick(View view) {
Intent i = new Intent(this, ResultsView.class);
EditText editText = (EditText) findViewById(R.id.edit_message);
String searchTerm = editText.getText().toString();
//call the getFactualResults method
try {
getFactualResults(searchTerm);
} catch (JSONException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
//Create the bundle
Bundle bundle = new Bundle();
//Add your data from getFactualResults method to bundle
bundle.putString("VENUE_NAME", venueName);
//Add the bundle to the intent
i.putExtras(bundle);
//Fire the second activity
startActivity(i);
}
第二个Activity中应接收Intent并绑定和显示Intent的方法:
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
//Get the message from the intent
//Intent intent = getIntent();
//String message = intent.getStringExtra(MainActivity.EXTRA_MESSAGE);
//Get the bundle
Bundle bundle = getIntent().getExtras();
//Extract the data…
String venName = bundle.getString(MainActivity.VENUE_NAME);
//Create the text view
TextView textView = new TextView(this);
textView.setTextSize(40);
textView.setText(venName);
//set the text view as the activity layout
setContentView(textView);
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.HONEYCOMB) {
getActionBar().setDisplayHomeAsUpEnabled(true);
}
}
谢谢你的帮助非常感谢。
8条答案
按热度按时间nfg76nw01#
有两种方法可以发送数据。这就是你现在发送数据的方式。它没有任何问题。
但是,在您的代码(第二个Activity)中,您将Bundle中的
key
称为MainActivity.VENUE_NAME
,但代码中没有任何内容表明您有一个类可以返回随Bundle发送的实际key
名称的值。如果捆绑包包含密钥,您可以使用此方法检查第二个Activity,您将知道
key
不存在于捆绑包中。但是,上述更正将使它为您工作。jgwigjjp2#
我觉得如果你把
与
它应该会起作用。
下面是我如何处理从一个活动到另一个活动的数据传输:
正在将数据发送到名为"项目视图选项"的活动:
接收数据:
两侧的"键"应相同;在这种情况下是"ID"。
发送:
接收方:
zqry0prt3#
您错误地访问了已添加到bundle中的密钥。除了获取字符串
MainActivity.VENUE_NAME
之外,请尝试直接传递已添加到bundle中的密钥名称,如下所示:除了得到字符串如下:
尝试使用键名获取字符串,如下所示:
czfnxgou4#
发送包裹。
收捆
ifsvaxew5#
请确保您用来将项目放入Bundle的键与用来提取它的键相同。在您的情况下,
MainActivity.VENUE_NAME
可能与“VENUE_NAME”不同mbzjlibv6#
oalqel3c7#
q35jwt9p8#
不需要仅使用
Bundle
来传递字符串(或任何基元数据类型)。您可以在调用活动中使用
i.putExtra("key", "value");
,并String s = getIntent().getStringExtra("key");
。