我有一个问题,我想设置并从Serializable类中获取Arraylists但是当我们想要将一个Arraylist设置为Same类时它会返回NullPointerException,我不知道为什么?请建议我正确的结果。
错误堆栈:
09-28 11:30:20.422: ERROR/AndroidRuntime(511): java.lang.NullPointerException
09-28 11:30:20.422: ERROR/AndroidRuntime(511): at com.example.test.Test_serializableActivity.parse_json(Test_serializableActivity.java:88)
09-28 11:30:20.422: ERROR/AndroidRuntime(511): at com.example.test.Test_serializableActivity$2.run(Test_serializableActivity.java:55)
代码:插入值Class
package com.example.test;
import java.util.ArrayList;
import org.apache.http.client.methods.HttpPost;
import org.apache.http.entity.StringEntity;
import org.json.JSONArray;
import org.json.JSONObject;
import android.app.Activity;
import android.app.ProgressDialog;
import android.content.Intent;
import android.os.Bundle;
import android.os.Handler;
import android.os.Message;
import android.widget.Toast;
public class Test_serializableActivity extends Activity {
/** Called when the activity is first created. */
public ArrayList<String> ibx_id = new ArrayList<String>();
public ArrayList<String> ibx_name = new ArrayList<String>();
public ArrayList<String> ibx_naturalKey = new ArrayList<String>();
setIbx ibx;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
HttpPost post = new HttpPost("http://qa.mobile.equinix.com/eqixmobile/siteservice/um/ibx");
try{
StringEntity se = new StringEntity("{\"credentials\":{\"username\":\"mobileuser1\",\"password\":\"welcome1\"}}");
final Service_Call obj = new Service_Call(post, se, "mobileuser1", "welcome1",false);
final ProgressDialog dialog = ProgressDialog.show(Test_serializableActivity.this, " EQUINIX ", "Loading.... ", true);
final Handler handler = new Handler() {
public void handleMessage(Message msg) {
Intent intent = new Intent(Test_serializableActivity.this,GetIbx.class);
startActivity(intent);
dialog.dismiss();
}
};
final Thread checkUpdate = new Thread() {
public void run() {
ibx_name.clear();
ibx_name.add("Select");
String json_string = obj.call_Service();
// new Parse_Json(json_string).parse();
parse_json(json_string);
handler.sendEmptyMessage(0);
}
};
checkUpdate.start();
}catch(Exception e)
{
e.printStackTrace();
}
}
public void parse_json(String json_string)
{
try{
JSONObject ja = new JSONObject(json_string);
JSONArray jo = ja.getJSONArray("ibx");
for(int i=0;i<jo.length();i++)
{
JSONObject j_data = jo.getJSONObject(i);
System.out.println("The id is:"+j_data.getString("id"));
ibx_id.add(j_data.getString("id"));
System.out.println("The Name is:"+j_data.getString("name"));
ibx_name.add(j_data.getString("name"));
System.out.println("The naturalKey is:"+j_data.getString("naturalKey"));
ibx_naturalKey.add(j_data.getString("naturalKey"));
}
}catch(Exception e)
{
e.printStackTrace();
}
ibx.setId(ibx_id);--------------->**NPE presents**
ibx.setName(ibx_name);
ibx.setNaturalKey(ibx_naturalKey);
}
}
获取价值等级:
package com.example.test;
import java.util.ArrayList;
import java.util.List;
import android.app.Activity;
import android.os.Bundle;
import android.widget.ArrayAdapter;
import android.widget.Spinner;
public class GetIbx extends Activity{
ArrayAdapter<String> statusAdapter;
Spinner sp_ibx;
List<String> ibx_list = new ArrayList<String>();
setIbx ibx;
@Override
public void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.newmain);
ibx_list = ibx.getName();
sp_ibx = (Spinner)findViewById(R.id.spinner1);
statusAdapter = new ArrayAdapter<String>( this,android.R.layout.simple_spinner_item, ibx_list);//Sets an status adapter
statusAdapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
sp_ibx.setAdapter(statusAdapter);
}
}
编辑:Getter / Setter类 -
package com.example.test;
import java.io.Serializable;
import java.util.ArrayList;
import java.util.List;
public abstract class setIbx implements Serializable {
/**
*
*/
private static final long serialVersionUID = 1L;
public List<String> id = new ArrayList<String>();
public List<String> name = new ArrayList<String>();
public List<String> naturalKey = new ArrayList<String>();
public void setId(ArrayList<String> id)
{
this.id = id;
}
public List<String> getId()
{
return id;
}
public void setName(ArrayList<String> name)
{
this.name = name;
}
public List<String> getName()
{
return name;
}
public void setNaturalKey(ArrayList<String> naturalKey)
{
this.naturalKey = naturalKey;
}
public List<String> getNaturalKey()
{
return naturalKey;
}
}
答案 0 :(得分:1)
您显示的所有代码都没有在 类中设置ibx
字段。据我所知,该字段将始终为null。
请注意,这不是ArrayList
的问题 - 它是setIbx ibx
字段,为null。我不清楚setIbx
类甚至是是什么,但我会集中精力研究你期望它是非空的而不是ArrayList
字段。< / p>
可能就像
的陈述一样简单ibx = new setIbx();
在你的构造函数中? (或者在现场声明中?)我不是Android开发人员,所以我可能会偏离基础,但这就是我认为你应该关注的。