2014-12-24 9 views
0

Я хочу получить данные профиля из mysql db из класса фрагмента. должен отображаться в текстовом виде. как имя студента, адрес, мобильный и т. д. Я использовал формат JSON для отправки данных с php.Как получить данные из mysql в классе фрагментов андроида?

вот мой код

public class ProfileFragment extends Fragment { 
private View parentView; 
// Session Manager Class 
SessionManager session; 
TextView student_name; 
ArrayList<HashMap<String, String>> oslist = new ArrayList<HashMap<String, String>>(); 
//URL to get JSON Array 
private String url; 

//JSON Node Names 
private static final String TAG_ARRAY = "student_profile"; 
private static final String TAG_NAME = "student_name"; 
JSONArray student_profile = null; 
@Override 
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { 
    //return inflater.inflate(R.layout.profile, container, false); 
    parentView = inflater.inflate(R.layout.profile, container, false); 
    //session.checkLogin(); 
    session = new SessionManager(getActivity()); 
    session.checkLogin(); 
    return parentView; 
} 

@Override 
public void onActivityCreated(Bundle savedInstanceState) { 
    // TODO Auto-generated method stub 
    super.onActivityCreated(savedInstanceState); 
    oslist = new ArrayList<HashMap<String, String>>(); 
    new JSONParse().execute(); 
} 

private class JSONParse extends AsyncTask<String, String, JSONObject> { 

    private ProgressDialog pDialog; 
    JSONParser jParser = new JSONParser(); 
    private JSONObject json; 

    @Override 
    protected void onPreExecute() { 
     super.onPreExecute(); 
     student_name = (TextView)getView().findViewById(R.id.studentname); 
     pDialog = new ProgressDialog(getActivity()); 
     pDialog.setMessage("Getting Data ..."); 
     pDialog.setIndeterminate(false); 
     pDialog.setCancelable(true); 
     pDialog.show(); 
    } 

    @Override 
    protected JSONObject doInBackground(String... args) { 
     // get user data from session 
     HashMap<String, String> user = session.getUserDetails(); 
     // name 
     String emailaddr = user.get(SessionManager.KEY_NAME); 
     url = "http://XXXXXXX.org/api/profile.php?emailid="+emailaddr; 
     // Getting JSON from URL 
     json = jParser.getJSONFromUrl(url); 
     return json; 
    } 

    @Override 
    protected void onPostExecute(JSONObject json) { 
     pDialog.dismiss(); 
     try { 
      // Getting JSON Array from URL 
      student_profile = json.getJSONArray(TAG_ARRAY); 
      for(int i = 0; i < student_profile.length(); i++){ 
       JSONObject c = student_profile.getJSONObject(i); 
       String student_firstname = null; 
       // Storing JSON item in a Variable 
       String name = c.getString(student_firstname); 
       Toast.makeText(getActivity(), "name="+name, Toast.LENGTH_LONG).show(); 
      } 
     } catch (JSONException e) { 
      e.printStackTrace(); 
     } 
    } 
} 

я получил ошибку как этот

12-24 09:29:44.817: W/System.err(30999): org.json.JSONException: No value for student_profile 

12-24 09: 29: 44.818: W/System.err (30999): в org.json .JSONObject.get (JSONObject.java:355) 12-24 09: 29: 44.819: W/System.err (30999): at org.json.JSONObject.getJSONArray (JSONObject.java:549) 12-24 09 : 29: 44.819: W/System.err (30999): at com.tutorialsface.ResideMenuDemo.ProfileFragment $ JSONParse.onPostExecute (ProfileFragment.java:89)

+0

проверить ur url на браузере. Я думаю, php return empty json – Elango

+0

показать ваше содержимое json –

+0

{"student_firstname": "Iyan", "student_lastname": "Hume", "student_photo": "", "student_address": "dfgsdf", "student_mobile": "3333333333 », "student_father_name": "", "student_dob": "", "student_mother_mobile": "", "student_landphone": "", "student_conveyance": "", "standard_name": нулевой, "division_name": "B" } –

ответ

1

Я думаю, что у вашего json нет значений для TAG_ARRAY. Так что это дает исключение JSONException. Вы должны сначала проверить значение как:

if (json.has(TAG_ARRAY)) { 
student_profile = json.getJSONArray(TAG_ARRAY); 
} 

Тогда он не будет производить JSONException.

Смежные вопросы