0
votes

Obtenir NULL en passant des données à travers un paquet d'activité au fragment

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;
}


5 commentaires

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 .


Ouais, mon mauvais .. corrigé ça, beaucoup merci!


4 Réponses :


0
votes

Vous pouvez appeler la méthode directement sur le fragment, par exemple: xxx

et dans votre fragment: xxx

SelecteysName est champ dans votre classe.


0 commentaires

1
votes

Dans votre code, vous créez un nouveau fragment lors du remplacement.

  getSupportFragmentManager().beginTransaction().replace(R.id.fragment_container,
                   taskAssignFragment).addToBackStack(null).commit();


0 commentaires

0
votes
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

0 commentaires

0
votes

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();


0 commentaires