Perdre des données sur le chemin lors de la passation de paquets, je reçois
tentative d'invoquer la méthode virtuelle 'java.lang.string android.os.bundle.getstring (java.lang.string)' sur un objet null Référence à chaîne bundlepassdata = ceci.getarguments (). GetString ("Tagname"); em> p> BlockQuote>
Voici un échantillon de mon code. MainActivity -> p>
@Nullable @Override public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) { View view = inflater.inflate(R.layout.fragment_task_assign, container, false); TextView test = view.findViewById(R.id.testerView); String bundlePassData = this.getArguments().getString("tagName"); test.setText(bundlePassData); return view; }
4 Réponses :
Vous pouvez appeler la méthode directement sur le fragment, par exemple: et dans votre fragment: p> où SelecteysName code> est champ dans votre classe. p> p>
Dans votre code, vous créez un nouveau fragment lors du remplacement.
getSupportFragmentManager().beginTransaction().replace(R.id.fragment_container, taskAssignFragment).addToBackStack(null).commit();
tagsView.setOnItemClickListener(new AdapterView.OnItemClickListener() { @Override public void onItemClick(AdapterView<?> adapterView, View view, int i, long l) { Bundle bundle = new Bundle(); TextView textView = (TextView) view.findViewById(R.id.tagName); String selectedItemName = textView.getText().toString(); bundle.putString("tagName", selectedItemName); TaskAssignFragment taskAssignFragment = new TaskAssignFragment(); taskAssignFragment.setArguments(bundle); FragmentTransaction transaction = getSupportFragmentManager().beginTransaction(); transaction.commit(); getSupportFragmentManager().beginTransaction().replace(R.id.fragment_container, taskAssignFragment).addToBackStack(null).commit(); Log.i("ListView", selectedItemName); } }); Please try this code, you create a new instance of TaskAssignFragment() and pass it without arguments
Vous faites un nouvel objet lors du remplacement du fragment.
TaskAssignFragment taskAssignFragment = new TaskAssignFragment(); taskAssignFragment.setArguments(bundle); getSupportFragmentManager().beginTransaction().replace(R.id.fragment_container, taskAssignFragment).addToBackStack(null).commit();
peut-être que votre getter original est retourné null
Je l'ai testé dans le log.i ("ListView", SELECTELITEMENTAMNAME); , il retourne juste la corde que je veux, ce n'est pas le problème
Comment est-ce lié à votre ceci.getarguments ()? c'est ce dont je parle
Vous n'avez jamais utilisé votre fragment Created-ARGuments Fragment
TaskAssignFragment code>.
Ouais, mon mauvais .. corrigé ça, beaucoup merci!