我有一个浮点数组camObjCoord
声明为..
public static float camObjCoord[] = new float[8000];
然后我在一个类中填充它的索引,类似于以下内容..
camObjCoord[1] = 2.5;
然后我打电话给makeview()
public void makeview() {
Intent myIntent = new Intent(this, GLCamTest.class);
this.startActivity(myIntent);
Bundle b = new Bundle();
b.putFloatArray("tweets", camObjCoord);
}
然后在新课程中它正在......
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
Bundle b = this.getIntent().getExtras();
float original[] = b.getFloatArray("tweets");
camObjCoord = original;
counter++;
}
但是......我在float original[] = b.getFloatArray("tweets");
获得了Null指针异常,我不知道为什么。我在调用意图等之前尝试过捆绑,但是我没有运气。谁知道为什么?
我也包含了一些你感兴趣的错误。
07-14 11:14:35.592: ERROR/AndroidRuntime(7886): Caused by: java.lang.NullPointerException
07-14 11:14:35.592: ERROR/AndroidRuntime(7886): at org.digital.com.GLCamTest.onCreate(GLCamTest.java:41)
07-14 11:14:35.592: ERROR/AndroidRuntime(7886): at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1047)
07-14 11:14:35.592: ERROR/AndroidRuntime(7886): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2627)
07-14 11:14:35.592: ERROR/AndroidRuntime(7886): ... 11 more
谢谢!
答案 0 :(得分:4)
好的,这表明this.getIntent().getExtras()
已返回null
。请注意,在makeview
中,您在创建捆绑包后没有完成任何内容。你需要这样做:
myIntent.putExtras(b);
也许在最后? (我不是Android开发人员所以我不知道API,但听起来很可能......)
编辑:正如其他人所指出的那样,你应该在之后设置startActivity
调用来设置意图上的所有内容。
答案 1 :(得分:3)
您的makeview
方法存在逻辑缺陷,您需要在意图启动之前添加额外内容。此外,强烈建议使用常量(GLCamTest.TWEETS
)作为密钥。
public void makeview() {
Intent myIntent = new Intent(this, GLCamTest.class);
myIntent.putExtra(GLCamTest.TWEETS, camObjCoord);//assuming camObjCoord is float[]
this.startActivity(myIntent);
}
另一方面
Bundle b = this.getIntent().getExtras();
float original[];
if (b!=null) {
original = b.getFloatArray(GLCamTest.TWEETS);
}
if (original!=null) {
//do something with original
}
答案 2 :(得分:1)
public void makeview() {
Intent myIntent = new Intent(this, GLCamTest.class);
this.startActivity(myIntent);
Bundle b = new Bundle();
b.putFloatArray("tweets", camObjCoord);
}
我认为您犯的错误是您已启动活动this.startActivity(myIntent);
,之后您传递了捆绑值
Bundle b = new Bundle();
b.putFloatArray("tweets", camObjCoord);
。的 ---->>> so it will pass nothing
即可。所以在接收方那边
Bundle b = this.getIntent().getExtras();
float original[] = b.getFloatArray("tweets");
<强> ---->>> this above code receive "null" value.
强>
因此,首先尝试捆绑,然后开始您的活动。
试试这个:
public void makeview() {
Intent myIntent = new Intent(this, GLCamTest.class);
Bundle b = new Bundle();
b.putFloatArray("tweets", camObjCoord);
this.startActivity(myIntent);
}
答案 3 :(得分:0)
如果在
行获得NullPointerExceptionfloat original[] = b.getFloatArray("tweets");
那么唯一的选择是b为null。在某些情况下,this.getIntent()。getExtras()是否可以返回null?你应该检查一下。
答案 4 :(得分:0)
this.getIntent()。getExtras()返回null。确保在makeview中创建捆绑包后没有做任何事情。你需要:
myIntent.putExtras(B);
最后
答案 5 :(得分:0)
好吧,我有类似的问题。在我的情况下,当我检查我的 bundle.getString()是否等于null时,发生了零点异常。
以下是我的案例解决方法:
Intent intent = getIntent();
if(intent.hasExtra("nomeUsuario")){
bd = getIntent().getExtras();
if(!bd.getString("nomeUsuario").equals(null)){
nomeUsuario = bd.getString("nomeUsuario");
}
}
答案 6 :(得分:0)
试试这个,它对我有用
Intent i = getIntent();
if (i == null)
Log.d(" DEBUG AGILANBU ", "Here the intent value was null");
else
Log.d(" DEBUG ", "Intent OK");
String strGetVal = i.getStringExtra("PackageName"); // Here we set an exception points to this line
Log.d("*** DEBUG", rec + " " + strGetVal);
Happie Coding