J'ai une application Android qui contient un BottomNavigationBar avec plusieurs fragments. un des fragments contient un formulaire a remplire par l'utilisateur et j'aimerai que après avoir remplis et validé le formulaire les données puissent s'afficher sous forme de TextVieiw dans un autre fragment de la barre de navigation;
Le principe devrais etre un peu comme celui de whatsapp c'est a dire Lorsque vous engagez une conversation avec un de vos contact l'historique de cette conversation est conservé dans un ListView avec le nom du contact de tel sorte que lorsque vous cliquez sur le nom du contact vous pouvez revoir toute votre conversation.t
c'est un truc similaire que j'aimerai obtenir.
Merci de m'aider! (Je reexpliquerais si je n'ai pas suffisament été claire);
Voila pour mon problème j'ai effectivement utilisé SQLite mais je tombe sur un autre problème lorsque j'execute mon code je tombe sur cette erreur:
09-28 07:10:23.312 16131-16131/cm.mavis.easylife E/AndroidRuntime: FATAL EXCEPTION: main
java.lang.NullPointerException
at cm.mavis.easylife.les_fragment.FragmentRecherche.RefreshList(FragmentRecherche.java:76)
at cm.mavis.easylife.les_fragment.FragmentRecherche.onCreateView(FragmentRecherche.java:62)
at android.support.v4.app.Fragment.performCreateView(Fragment.java:2239)
at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:1332)
at android.support.v4.app.FragmentManagerImpl.moveFragmentToExpectedState(FragmentManager.java:1574)
at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:1641)
at android.support.v4.app.BackStackRecord.executeOps(BackStackRecord.java:794)
at android.support.v4.app.FragmentManagerImpl.executeOps(FragmentManager.java:2415)
at android.support.v4.app.FragmentManagerImpl.executeOpsTogether(FragmentManager.java:2200)
at android.support.v4.app.FragmentManagerImpl.optimizeAndExecuteOps(FragmentManager.java:2153)
at android.support.v4.app.FragmentManagerImpl.execPendingActions(FragmentManager.java:2063)
at android.support.v4.app.FragmentManagerImpl$1.run(FragmentManager.java:725)
at android.os.Handler.handleCallback(Handler.java:730)
at android.os.Handler.dispatchMessage(Handler.java:92)
at android.os.Looper.loop(Looper.java:137)
at android.app.ActivityThread.main(ActivityThread.java:5455)
at java.lang.reflect.Method.invokeNative(Native Method)
at java.lang.reflect.Method.invoke(Method.java:525)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1187)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1003)
at dalvik.system.NativeStart.main(Native Method)
09-28 07:10:26.346 16131-16131/cm.mavis.easylife I/Process: Sending signal. PID: 16131 SIG: 9
je me suis débattu comme j'ai pu pour démelé tout ça mais j'y arrive pas aidez moi s'il vous plait:
voici mon fragment:
package cm.mavis.easylife.les_fragment;
import android.content.Context;
import android.content.DialogInterface;
import android.content.Intent;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;
import android.os.Bundle;
import android.support.design.widget.FloatingActionButton;
import android.support.v4.app.Fragment;
import android.support.v7.app.AlertDialog;
import android.support.v7.app.AppCompatActivity;
import android.view.LayoutInflater;
import android.view.Menu;
import android.view.MenuInflater;
import android.view.MenuItem;
import android.view.View;
import android.view.ViewGroup;
import android.widget.AdapterView;
import android.widget.ArrayAdapter;
import android.widget.ListView;
import cm.mavis.easylife.ChoixRecherche;
import cm.mavis.easylife.DataHelper;
import cm.mavis.easylife.LectureInfos;
import cm.mavis.easylife.R;
public class FragmentRecherche extends Fragment {
String[] daftar;
ListView listview;
Menu menu;
protected Cursor cursor;
DataHelper dbcenter;
public static Context fragment;
public static FragmentRecherche newInstance() {
FragmentRecherche fragment = new FragmentRecherche();
return fragment;
}
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
View view = inflater.inflate(R.layout.fragment_recherche, container, false);
FloatingActionButton floatingActionButton = view.findViewById(R.id.fab);
floatingActionButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
Intent intent = new Intent(getContext(), ChoixRecherche.class);
startActivity(intent);
}
});
fragment= getContext();
dbcenter = new DataHelper(getContext());
RefreshList();
return view;
}
public void RefreshList() {
SQLiteDatabase database = dbcenter.getReadableDatabase();
cursor = database.rawQuery("SELECT * FROM cni_perdu", null);
daftar = new String[cursor.getCount()];
cursor.moveToFirst();
for (int cc = 0; cc < cursor.getCount(); cc++) {
cursor.moveToPosition(cc);
daftar[cc] = cursor.getString(1);
}
listview = listview.findViewById(R.id.liste_recherche);
listview.setAdapter(new ArrayAdapter(getContext(), android.R.layout.simple_list_item_1, daftar));
listview.setSelected(true);
listview.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView arg0, View arg1, int arg2, long arg3) {
final String selection = daftar[arg2];
final CharSequence[] dialogitem = {"Voir", "Suprimer"};
AlertDialog.Builder builder = new AlertDialog.Builder(getContext());
builder.setTitle("Option");
builder.setItems(dialogitem, new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int item) {
switch (item) {
case 0:
Intent intent = new Intent(getContext(), LectureInfos.class);
intent.putExtra("nom", selection);
startActivity(intent);
break;
case 1:
SQLiteDatabase database = dbcenter.getWritableDatabase();
database.execSQL("delete from cni_perdu where nom = '" + selection + "'");
RefreshList();
break;
}
}
});
builder.create().show();
}
});
((ArrayAdapter) listview.getAdapter()).notifyDataSetInvalidated();
}
@Override
public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) {
inflater.inflate(R.menu.menu_main, menu);
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
int id = item.getItemId();
if (id == R.id.action_settings) {
return true;
}
return super.onOptionsItemSelected(item);
}
}
Lorsque j'enleve ces 3 lignes
fragment= getContext();
dbcenter = new DataHelper(getContext());
RefreshList();
dans mon code, l'application s'execute correctement sauf que les information que j'entre dans la base de donnée je ne les vois pas dans mon listView.
Salut rolandl j'ai certainement du mal copié le code mais l'erreur se produit au liveau de la ligne 78 et de la ligne 63
voici le log
1110-21110/cm.mavis.easylife E/AndroidRuntime: FATAL EXCEPTION: main
java.lang.NullPointerException
at cm.mavis.easylife.les_fragment.FragmentRecherche.RefreshList(FragmentRecherche.java:78)
at cm.mavis.easylife.les_fragment.FragmentRecherche.onCreateView(FragmentRecherche.java:63)
at android.support.v4.app.Fragment.performCreateView(Fragment.java:2239)
at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:1332)
at android.support.v4.app.FragmentManagerImpl.moveFragmentToExpectedState(FragmentManager.java:1574)
at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:1641)
at android.support.v4.app.BackStackRecord.executeOps(BackStackRecord.java:794)
at android.support.v4.app.FragmentManagerImpl.executeOps(FragmentManager.java:2415)
at android.support.v4.app.FragmentManagerImpl.executeOpsTogether(FragmentManager.java:2200)
at android.support.v4.app.FragmentManagerImpl.optimizeAndExecuteOps(FragmentManager.java:2153)
at android.support.v4.app.FragmentManagerImpl.execPendingActions(FragmentManager.java:2063)
at android.support.v4.app.FragmentManagerImpl$1.run(FragmentManager.java:725)
at android.os.Handler.handleCallback(Handler.java:730)
at android.os.Handler.dispatchMessage(Handler.java:92)
at android.os.Looper.loop(Looper.java:137)
at android.app.ActivityThread.main(ActivityThread.java:5455)
at java.lang.reflect.Method.invokeNative(Native Method)
at java.lang.reflect.Method.invoke(Method.java:525)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1187)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1003)
at dalvik.system.NativeStart.main(Native Method)
Ta question est étonnante vu le code que tu as déjà théoriquement écrit...
Il convient de récupérer la référence de ton widget graphique à partir de la vue inflatée. Soit de la même façon dont tu récupères la référence de ton floating button
J'ai déjà essayé de récupéré cela de la même façon que mon floating button et cela s'avère impossible. J'ai déjà tout essayé avec ce code mais sans aucun résultat différent.
Si la variable view n'est pas trouvée c'est qu'elle n'existe pas dans le scope. Tu dois donc changer l'endroit où tu récupères ta référence. A l'image de ce qui est fait pour ton bouton flottant, il convient de le faire dans ta méthode onCreateView.
× Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
× Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
Mon site - Mon livre sur le XML - Mon blog
Mon site - Mon livre sur le XML - Mon blog
Mon site - Mon livre sur le XML - Mon blog
Mon site - Mon livre sur le XML - Mon blog
Mon site - Mon livre sur le XML - Mon blog
Mon site - Mon livre sur le XML - Mon blog
Mon site - Mon livre sur le XML - Mon blog