J'essaie de faire une application TabLayout (ViewPager) avec trois fragments. Dans l'un de ces onglets, je souhaite afficher une vue de liste personnalisée JSON analysée. La vue Liste personnalisée et la mise en page fonctionnent correctement (codes du didacticiel). Lorsque je combine ces deux, App se bloque immédiatement, je ne pouvais pas comprendre ce qui ne va pas. vous espérons que vous les gars peuvent aiderAndroid ViewPager Frame Listview Crash
Merci Sam_0829 .... tu me as sauvé
Les problèmes étaient 1. Au lieu de MainActivity, getMessages doit être Fragment
Affichage Était vide lors de l'appel de onCreated, donc j'ai déclaré une variable de vue privée
private View v;
// puis onCreate
Voir v = inflater.inflate (R.layout.message_tab, contenant, false);
et passé dans
onViewCreated public void onViewCreated (Voir v, @Nullable Bundle savedInstanceState) { super.onViewCreated (v, savedInstanceState); contactList = new ArrayList <>();
lv = (ListView) v.findViewById(R.id.list);
new Getmessages().execute();
}
et la vie est devenue impressionnante
Merci yo sam vous me appris à tirer de la difficulté via les journaux ... quelque chose que je ne faisais confiance avant
message Fragment (Résolu Code) ->
package com.example.user.newton;
public class MessageTab extends Fragment {
private String TAG = MainActivity.class.getSimpleName();
private ProgressDialog pDialog;
private ListView lv;
private View v;
// URL to get messages JSON
private static String url = "http://myjson.com/17oyz5";
ArrayList<HashMap<String, String>> contactList;
private MainActivity.SectionsPagerAdapter mSectionsPagerAdapter;
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
// Inflate the layout for this fragment
View v = inflater.inflate(R.layout.message_tab, container, false);
return v;
}
private class Getmessages extends AsyncTask<Void, Void, Void> {
@Override
protected void onPreExecute() {
super.onPreExecute();
// Showing progress dialog
pDialog = new ProgressDialog(getActivity());
pDialog.setMessage("Please wait...");
pDialog.setCancelable(false);
pDialog.show();
}
@Override
protected Void doInBackground(Void... arg0) {
HttpHandler sh = new HttpHandler();
// Making a request to url and getting response
String jsonStr = sh.makeServiceCall(url);
Log.e(TAG, "Response from url: " + jsonStr);
if (jsonStr != null) {
try {
JSONObject jsonObj = new JSONObject(jsonStr);
// Getting JSON Array node
JSONArray messages = jsonObj.getJSONArray("messages");
// looping through All messages
for (int i = 0; i < messages.length(); i++) {
JSONObject c = messages.getJSONObject(i);
String message= c.getString("message");
String sender= c.getString("sender");
String mtime= c.getString("time");
HashMap<String, String> contact = new HashMap<>();
// adding each child node to HashMap key => value
contact.put("message", message);
contact.put("sender", sender);
contact.put("mtime", mtime);
contactList.add(contact);
}
} catch (final JSONException e) {
Log.e(TAG, "Json parsing error: " + e.getMessage());
getActivity().runOnUiThread(new Runnable() {
@Override
public void run() {
Toast.makeText(getActivity(),
"Json parsing error: " + e.getMessage(),
Toast.LENGTH_LONG)
.show();
}
});
}
} else {
Log.e(TAG, "Couldn't get json from server.");
getActivity().runOnUiThread(new Runnable() {
@Override
public void run() {
Toast.makeText(getActivity(),
"Couldn't get json from server. Check LogCat for possible errors!",
Toast.LENGTH_LONG)
.show();
}
});
}
return null;
}
@Override
protected void onPostExecute(Void result) {
super.onPostExecute(result);
// Dismiss the progress dialog
if (pDialog.isShowing())
pDialog.dismiss();
/**
* Updating parsed JSON data into ListView
* */
ListAdapter adapter = new SimpleAdapter(
getActivity(), contactList,
R.layout.custom_layout, new String[]{"message", "sender",
"mtime"}, new int[]{R.id.name,
R.id.email, R.id.mobile});
lv.setAdapter(adapter);
}
}
@Override
public void onViewCreated(View v, @Nullable Bundle savedInstanceState) {
super.onViewCreated(v, savedInstanceState);
contactList = new ArrayList<>();
lv = (ListView) v.findViewById(R.id.list);
new Getmessages().execute();
}
}
MessageFragment Mise en page
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical" android:layout_width="match_parent"
android:layout_height="match_parent">
<ListView
android:id="@+id/list"
android:layout_width="match_parent"
android:layout_height="match_parent" />
</LinearLayout>
Diffusez votre rapport d'accident –
utilisant adb ... log chat n'a rien lié à la crash .. – Fortune