2012-09-17 75 views
0

这是我从未想到的第一个奇怪结果。这可能是该领域缺乏技能。startActivity调用第一个在startActivityForResult之后调用的调用

嗯,我有一个按钮,通过它我需要从手机库(可能来自SD卡)选择一个图像。我用隐含的意图调用手机图库,并获得了与startActivityForResult()绝对图像路径。立即打电话给另一项活动,将该路径与startActivity()

根据我的情况,我在按钮的onClick()中编写了以下代码。

当我点击按钮,startActivity(next)首先被调用,然后startActivityForResult(intent,1)被调用。当我试图通过捆绑对象获取第二个活动中的图像路径时,我得到NullPointerException,因为startActivity(next)被首先调用。

当我看到我的调试点不符合预期时,我放下了下颌。希望我得到这个问题的确切原因。

感谢
Aswin

回答

0

怎么样获取路径

protected void upLoadPhoto() { 

Intent intent = new Intent(Intent.ACTION_GET_CONTENT, null); 
intent.setType("image/*"); 
intent.putExtra("return-data", true); 
System.out.println("select image"); 
startActivityForResult(intent, 1); 

finish(); 

}

public void onActivityResult(int requestCode, int resultCode, Intent data) { 
super.onActivityResult(requestCode, resultCode, data); 
     if(requestCode == 1 && data != null && data.getData() != null){ 
      Uri uri = data.getData(); 
      if (uri != null) { 
       Cursor cursor = getContentResolver().query(uri, new String[] { android.provider.MediaStore.Images.ImageColumns.DATA }, null, null, null); 
       cursor.moveToFirst(); 
       final String imageFilePath = cursor.getString(0); 
       System.out.println("Background : "+imageFilePath); 
       next.putExtra("backImagePath", imageFilePath); 
       cursor.close(); 

      startActivity(next); 

     super.onActivityResult(requestCode, resultCode, data); 
    } 
} 
后调用 startActivity(next);迁入 onActivityResult() ......这样你就导航到其他活动

}

+0

它的工作就像一个魅力。谢谢亲爱的努努。但我应该得到问题的原因。你能解释一下吗? – Aswin

+0

问题是调用结果的活动需要一些时间,并且在startActivityForResult之后立即调用start活动时,系统必须在完成onActivityResult处理之前转到下一个活动(如打开2个线程比另一个短) – Nermeen

+0

谢谢Nunu为有帮助。 – Aswin

0

删除startActivity(next)从功能,把它放在你onActivityResult检索您的数据

0

你有当从画廊成功的选择你的图像调用startActivity()onActivityResult()后。因为当startActivityForResult()它将要进入图库以拾取图像,并且在此之前startActivity()被触发并且您将移动到下一个活动。

0

删除startActivity从功能(下一步),并把它放在onActivityResult后得到1加你的下一个意图

相关问题