Java 如何在android应用程序上通过JSON解析的活动之间传递字符串?
我试图在android应用程序中的一个DB中通过JSON解析的两个独立活动之间传递一个字符串。代码在MainActivity中编译,但在SingleContactActivity中有错误。具体来说,错误在字符串测试附加项上。。。。。线路处于单触点状态。 使用本教程 此外,我删除了导入以减少代码混乱,如果需要,我可以重新添加它们Java 如何在android应用程序上通过JSON解析的活动之间传递字符串?,java,android,json,string,parsing,Java,Android,Json,String,Parsing,我试图在android应用程序中的一个DB中通过JSON解析的两个独立活动之间传递一个字符串。代码在MainActivity中编译,但在SingleContactActivity中有错误。具体来说,错误在字符串测试附加项上。。。。。线路处于单触点状态。 使用本教程 此外,我删除了导入以减少代码混乱,如果需要,我可以重新添加它们 public class MainActivity extends ListActivity { private ProgressDialog pDialog; //
public class MainActivity extends ListActivity {
private ProgressDialog pDialog;
// URL to get contacts JSON
public static String url = "http://api.androidhive.info/contacts/";
// JSON Node names
private static final String TAG_NAME = "name";
private static final String TAG_EMAIL = "email";
private static final String TAG_PHONE = "phone";
// contacts JSONArray
JSONArray contacts = null;
// Hashmap for ListView
ArrayList<HashMap<String, String>> contactList;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
contactList = new ArrayList<HashMap<String, String>>();
ListView lv = getListView();
// Listview on item click listener
lv.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.name))
.getText().toString();
String cost = ((TextView) view.findViewById(R.id.email))
.getText().toString();
String description = ((TextView) view.findViewById(R.id.mobile))
.getText().toString();
// Launching new Activity on selecting single List Item
Intent in = new Intent(MainActivity.this, SingleContactActivity.class);
//getApplicationContext()
// sending data to new activity
in.putExtra("TAG_NAME", name);
in.putExtra(TAG_EMAIL, cost);
in.putExtra(TAG_PHONE_MOBILE, description);
startActivity(in);
}
});
尝试修复此错误:
String test = extras.getString("TAG_NAME");
而不是
String test extras.getString("TAG_NAME");
除此之外,一切似乎都很好。试试这个:
主要活动
// Launching new Activity on selecting single List Item
Intent in = new Intent(MainActivity.this, SingleContactActivity.class);
// sending data to new activity
in.putExtra("TAG_NAME", "Name is passed here!");
in.putExtra(TAG_EMAIL, cost);
in.putExtra(TAG_PHONE_MOBILE, description);
startActivity(in);
在单身活动中
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
this.setContentView(R.layout.single_list_item_view);
Bundle extras = getIntent().getExtras();
if( extras != null ) {
String test = extras.getString("TAG_NAME");
Log.d("", "Value passed = " + test);
}
}
没有错误,但是当我运行app@user3192423,试试我的编辑,告诉我你得到了什么。你应该在你的日志中看到“Value passed=Name is passed here!”。我照你说的做了,AVD上的新活动中没有显示任何内容。但是我检查了log cat,它只说了“Value passed=null”,你的问题是使用in.putExtra(TAG_NAME,NAME);发送时,使用String test=extras.getString(“TAG_NAME”);收到时。发送和检查时,更改为in.putExtra(“TAG_NAME”,NAME)。双引号是非常重要的,要么在两者上都使用,要么根本不使用。在SingleContactActivity中,我更改了String test=extras.getString(“TAG_NAME”);在main中活动在.putExtra中更改(标记名称,名称);--->>in.putExtra(“标签名称”,名称);运行应用程序,无错误,选定活动-仍不返回活动
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
this.setContentView(R.layout.single_list_item_view);
Bundle extras = getIntent().getExtras();
if( extras != null ) {
String test = extras.getString("TAG_NAME");
Log.d("", "Value passed = " + test);
}
}