0
Я пытаюсь разобрать JSON из одного из созданных json, но я не могу его разобрать, и он вызывает исключение нулевого указателя в методе showdata(). что я пропал. Я проверил с именем массива и скриптом php. Как реализовать это решить проблемуJSON parsing из базы данных
синтаксического анализа активности
import android.content.Intent;
import android.support.v7.app.ActionBarActivity;
import android.os.Bundle;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import org.json.JSONArray;
import org.json.JSONException;
import org.json.JSONObject;
public class ParseJSON extends ActionBarActivity implements View.OnClickListener {
private String myJSONString;
private static final String JSON_ARRAY="result";
private static final String ID = "id";
//private static final String NAME ="name";
//private static final String PROFESSION= "profession";
private JSONArray users = null;
private int TRACK= 0;
private EditText editTextId;
private EditText editTextName;
private EditText editTextProf;
Button btnPrev;
Button btnNext;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_parse_json);
Intent intent =getIntent();
myJSONString = intent.getStringExtra(MainActivity.MY_JSON);
editTextId = (EditText)findViewById(R.id.editTextID);
//editTextName=(EditText)findViewById(R.id.editTextUsername);
//editTextProf=(EditText)findViewById(R.id.editTextPassword);
btnNext=(Button)findViewById(R.id.buttonNext);
btnPrev=(Button)findViewById(R.id.buttonPrev);
btnPrev.setOnClickListener(this);
btnNext.setOnClickListener(this);
extractJSON();
showData();
}
private void extractJSON() {
try {
JSONObject jsonObject = new JSONObject();
users = jsonObject.getJSONArray(JSON_ARRAY);
} catch (JSONException e) {
e.printStackTrace();
}
}
private void moveNext(){
if(TRACK<users.length()){
TRACK++;
}
showData();
}
private void movePrev(){
if(TRACK>0){
TRACK--;
}
showData();
}
private void showData(){
try{
JSONObject jsonObject= users.getJSONObject(TRACK);
editTextId.setText(jsonObject.getString(ID));
// editTextName.setText(jsonObject.getString(NAME));
// editTextProf.setText(jsonObject.getString(PROFESSION));
}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_parse_json, 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);
}
@Override
public void onClick(View view) {
if(view==btnNext){
moveNext();
}
else if (view==btnPrev)
movePrev();
}
}
mainactivity
import android.app.ProgressDialog;
import android.content.Intent;
import android.os.AsyncTask;
import android.support.v7.app.ActionBarActivity;
import android.os.Bundle;
import android.text.method.ScrollingMovementMethod;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.widget.Button;
import android.widget.TextView;
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.net.HttpURLConnection;
import java.net.URL;
public class MainActivity extends ActionBarActivity implements View.OnClickListener {
private TextView textviewJSON;
private Button buttonGet;
private Button buttonParse;
public static final String MY_JSON="MY_JSON";
public static final String JSON_URL="http://www.humanfox.com/capsule/dash.php";
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
textviewJSON=(TextView)findViewById(R.id.textViewJSON);
textviewJSON.setMovementMethod(new ScrollingMovementMethod());
buttonGet=(Button)findViewById(R.id.buttonGet);
buttonParse=(Button)findViewById(R.id.buttonParse);
buttonGet.setOnClickListener(this);
buttonParse.setOnClickListener(this);
}
@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);
}
@Override
public void onClick(View view) {
if (view==buttonGet){
getJSON(JSON_URL);
}
else if(view==buttonParse){
showParseActivity();
}
}
private void showParseActivity() {
Intent intent = new Intent(this, ParseJSON.class);
intent.putExtra(MY_JSON,textviewJSON.getText().toString());
startActivity(intent);
}
private void getJSON(String url){
class GetJSON extends AsyncTask<String, Void, String>{
ProgressDialog loading;
@Override
protected void onPreExecute() {
super.onPreExecute();
loading= ProgressDialog.show(MainActivity.this, "Please Wait.....",null, true , true);
}
@Override
protected String doInBackground(String... params) {
String uri=params[0];
BufferedReader bufferedReader= null;
try{
URL url = new URL(uri);
HttpURLConnection con = (HttpURLConnection) url.openConnection();
StringBuilder sb = new StringBuilder();
bufferedReader= new BufferedReader(new InputStreamReader(con.getInputStream()));
String json;
while((json= bufferedReader.readLine())!=null){
sb.append(json+"\n");
}
return sb.toString().trim();
}catch(Exception e){
return null;
}
}
@Override
protected void onPostExecute(String s) {
super.onPostExecute(s);
loading.dismiss();
}
}
GetJSON gj = new GetJSON();
gj.execute(url);
}
}