Android 运行时出现空指针异常错误
此行引发空指针异常错误:Android 运行时出现空指针异常错误,android,nullpointerexception,Android,Nullpointerexception,此行引发空指针异常错误: String dataPath = intent.getData().toString(); 有人知道为什么吗?下面是我主要活动的一个片段。 一切看起来都很好 protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_contact_picker); In
String dataPath = intent.getData().toString();
有人知道为什么吗?下面是我主要活动的一个片段。
一切看起来都很好
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_contact_picker);
Intent intent = getIntent();
String dataPath = intent.getData().toString();
final Uri data = Uri.parse(dataPath+"people/");
final Cursor c = managedQuery(data, null, null, null, null);
String[] from = new String[] {People.NAME};
int[] to = new int[] {R.id.itemTextView };
SimpleCursorAdapter adapter = new SimpleCursorAdapter(this,
R. layout.listitemlayout, c, from, to);
ListView lv = (ListView)findViewById(R.id.contactListView);
lv.setAdapter(adapter);
lv.setOnItemClickListener(new OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, View view, int pos,
long id) {
c.moveToPosition(pos);
int rowId = c.getInt(c.getColumnIndexOrThrow("_id"));
Uri outURI = Uri.parse(data.toString() + rowId);
Intent outData = new Intent();
outData.setData(outURI);
setResult(Activity.RESULT_OK, outData);
finish();
}
});
}
创建时受保护的void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.activity\u contact\u picker);
Intent=getIntent();
字符串dataPath=intent.getData().toString();
final Uri data=Uri.parse(dataPath+“people/”);
最终游标c=managedQuery(数据,null,null,null,null);
String[]from=新字符串[]{People.NAME};
int[]to=newint[]{R.id.itemTextView};
SimpleCrsorAdapter=新的SimpleCrsorAdapter(此,
R.布局。listitemlayout,c,from,to);
ListView lv=(ListView)findViewById(R.id.contactListView);
低压设置适配器(适配器);
lv.setOnItemClickListener(新的OnItemClickListener(){
@凌驾
public void onItemClick(AdapterView父级、视图、int pos、,
长id){
c、 移动定位;
introwid=c.getInt(c.getColumnIndexOrThrow(“_-id”);
uriouturi=Uri.parse(data.toString()+rowId);
Intent outData=新Intent();
setData(outURI);
设置结果(Activity.RESULT_OK,outData);
完成();
}
});
}
要调用另一个活动通常我们会使用如下意图:
要发送的第一个活动:
Intent in = new Intent(MainActivity.this, NewActivity.class);
String StrName = "xyz"
in.putExtra("data",StrName);
startActivity (in);
在其他活动中接收:
String Sname = getIntent().getExtras().getString("data");
要查看意图的详细信息,请参阅此处:如何调用活动,它是否可能没有数据?什么是
intent.getData().toString()代码>?请参阅您能否共享异常的堆栈跟踪。您需要getIntent().getExtras().getString(“键”)代码>而不是intent.getData().toString()
使用setData
有什么错,特别是因为OP显然是在处理Uri?我想这可以解释一点:是的,在这个问题上,使用setData
似乎是相关的。