- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
您好,我在解析此代码的 onPostExecute 部分时遇到问题,我认为我做对了,但不知何故问题仍然存在。它说我在 postExecute()
上遇到了 nullPointerException方法第 74 行和第 46 行。有人可以帮我解决这个问题吗?
这是错误日志
E/AndroidRuntime﹕ FATAL EXCEPTION: main
Process: com.example.crow.androidappthirteen, PID: 25314
java.lang.NullPointerException
at com.example.crow.androidappthirteen.MainActivity$JSONParse.onPostExecute(MainActivity.java:74)
at com.example.crow.androidappthirteen.MainActivity$JSONParse.onPostExecute(MainActivity.java:46)
at android.os.AsyncTask.finish(AsyncTask.java:632)
at android.os.AsyncTask.access$600(AsyncTask.java:177)
at android.os.AsyncTask$InternalHandler.handleMessage(AsyncTask.java:645)
at android.os.Handler.dispatchMessage(Handler.java:102)
at android.os.Looper.loop(Looper.java:157)
at android.app.ActivityThread.main(ActivityThread.java:5335)
at java.lang.reflect.Method.invokeNative(Native Method)
at java.lang.reflect.Method.invoke(Method.java:515)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1265)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1081)
at dalvik.system.NativeStart.main(Native Method)
public class MainActivity extends ActionBarActivity {
String id, name, course;
JSONArray students = null;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
new JSONParse().execute();
}
@Override
protected void onResume() {
// TODO Auto‐generated method stub
super.onResume();
new JSONParse().execute();
}
//JSON
/*THIS IS LINE 46*/ private class JSONParse extends AsyncTask<String, String, JSONObject> {
private ProgressDialog pDialog;
@Override
protected void onPreExecute() {
super.onPreExecute();
pDialog = new ProgressDialog(MainActivity.this);
pDialog.setMessage("Getting Data ...");
pDialog.setIndeterminate(false);
pDialog.setCancelable(true);
pDialog.show();
}
@Override
protected JSONObject doInBackground(String... args) {
JSONParser jParser = new JSONParser();
// Getting JSON from URL
JSONObject json = jParser.getJSONFromUrl("http://192.168.43.43/mymobile/getstudentlist.php");
return json;
}
@Override
protected void onPostExecute(JSONObject json) {
pDialog.dismiss();
final ArrayList<String> ids = new ArrayList<String>();
final ArrayList<String> names = new ArrayList<String>();
final ArrayList<String> courses = new ArrayList<String>();
try {
/* THIS IS LINE 74 */ students = json.getJSONArray("students");
for (int i = 0; i < students.length(); i++) {
JSONObject student = students.getJSONObject(i);
ids.add(student.getString("id"));
names.add(student.getString("name"));
courses.add(student.getString("course"));
}
final ListView listView = (ListView) findViewById(R.id.list);
ArrayAdapter<String> adapter = new
ArrayAdapter<String>(MainActivity.this,
android.R.layout.simple_list_item_1, android.R.id.text1,
names);
// Assign adapter to ListView
listView.setAdapter(adapter);
// ListView Item Click Listener
listView.setOnItemClickListener(new OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, View view,
int position, long id) {
// ListView Clicked item value
String stud_id = ids.get(position);
String stud_name = names.get(position);
String stud_course = courses.get(position);
Intent i = new Intent(MainActivity.this, ActivityEditDel.class);
i.putExtra("stud_id", stud_id);
i.putExtra("stud_name", stud_name);
i.putExtra("stud_course", stud_course);
startActivity(i);
}
});
} catch (
JSONException e
)
{
e.printStackTrace();
}
}
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.menu_main, menu);
return true;
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
// Handle action bar item clicks here. The action bar will
// automatically handle clicks on the Home/Up button, so long
// as you specify a parent activity in AndroidManifest.xml.
int id = item.getItemId();
//noinspection SimplifiableIfStatement
if (id == R.id.action_settings) {
return true;
}
return super.onOptionsItemSelected(item);
}
}
<?php
$database_name = 'dbstudrec';
$con = mysql_connect('localhost', 'root') or die(mysql_error());
mysql_select_db($database_name) or die(msql_error());
$query = "SELECT * FROM tblstudent";
$result = mysql_query($query);
$rec = array();
while($row = mysql_fetch_assoc($result)){
$rec['students'][] = $row;
}
echo json_encode($rec);
mysql_close($con);
?>
getstudentlist.php
时文件,我得到一个输出。所以肯定有另一个原因它变得空了。
最佳答案
在给定的行中:
protected void onPostExecute(JSONObject json)
students = json.getJSONArray("students");
try{
student.put("key",json.getJSONArray("students"));
}catch(Exception e){...}
关于java - NullPointerException getJSONArray,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30012292/
我正在尝试解析以下结构中的 JSON 文件 { "category": { "subcat_1": [ { "item1": "xx"
您好,我在解析此代码的 onPostExecute 部分时遇到问题,我认为我做对了,但不知何故问题仍然存在。它说我在 postExecute() 上遇到了 nullPointerException方法
我有一个像这样的 JSON 对象: { "Successful": true, "Value": { "Materials":[{ "MaterialID": 37628,
我正在尝试从 Web 服务器上的 MySQL 数据库中获取数据。我的目标是检索已经在 MySQL 数据库中的位置数据数组。我正在从服务器获取此数据数组,但无法将其从 jsonResponse.getJ
为什么 JSONObject.getJSONArray() 不识别数组?空有影响吗? 这里是 Java 代码: String inputJSON = "{'links':'[]','format':'
我正在使用 org.json库作为我的 Java 应用程序的 JSON 客户端,我想知道这个库中一些方法的复杂性。 我正在通过它的 HTTP API 从数据库中检索另一个 JSON 对象(等等)内的
我想使用 Google 距离矩阵 API 来获取两个位置之间行驶所需的持续时间。但是当我尝试从返回的数据(JSON 编码)获取持续时间时,方法 getJSONArray 始终返回 null。 以下是
这个问题已经有答案了: Importing JSON into an Eclipse project (7 个回答) 已关闭 5 年前。 JSON1: { "array1": [ {
我的代码提取了 JSONObject 的结果,但是,有时,i 值不以 1 开头,并且我有这样的错误: org.json.JSONException: No value for 1 我的代码: JSON
这个问题不太可能帮助任何 future 的访问者;它只与一个小的地理区域、一个特定的时间点或一个非常狭窄的情况有关,这些情况并不普遍适用于互联网的全局受众。为了帮助使这个问题更广泛地适用,visit
我从 URL 读取 XML,如下所示: import java.io.BufferedReader; import java.io.IOException; import java.io.InputS
我正在尝试从 PHP 获取包含纬度和经度的响应,因此在我的应用程序接收到这些坐标后,它应该根据 map 上的坐标添加标记。根据 JSONlint,JSON 响应是有效的,但该应用似乎不想添加标记。 .
我有一个如下所示的 JSON 响应: { "result": { "map": { "entry": [ { "key": { "@xsi.
嘿,我在调用 getJSONArray 时注意到这种非常奇怪的行为。这是我的代码: JSONObject jsonObject = new JSONObject(data); if (!jsonO
我的应用无法从服务器获取数据。 我在互联网上找到的每个解决方案都不起作用。 private static final String KEY_DATA = "data"; HashMap temp =
我想浏览下面的 json 文件并保存“坐标”后面的部分。 json 文件: {"type": "FeatureCollection","features": [{"type": "Feature","
使用应用程序搜索姓名时发生错误,因此在应用程序内搜索姓名时未显示任何结果。 尝试在 JSONArray 和 JSONObject 之间进行更改,但出现类似的错误。 URL 正确并且确实以 JSON 格
我是一名优秀的程序员,十分优秀!