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
似乎是相关的。