2016-07-28 29 views
0

Ich versuche Zeichenfolge von Adapter passieren in Bundle bu ti'm immer null in meinem FragmentBundle Null zurückkehrt, wenn in Fragment namens

Hier ist mein Code fragmentieren Zeichenfolge hinzuzufügen

zu Bundle
  Bundle bundle=new Bundle(); 
      bundle.putString("id",expense_id); 
      AddExpenseFragment fragment=new AddExpenseFragment(); 
      fragment.setArguments(bundle); 
      UiActivity.startAddExpense(context); 

dies ist mein Code in Fragmente

public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) { 

    super.onCreateView(inflater, container, savedInstanceState); 
    View view=inflater.inflate(R.layout.activity_fragment_add_expense,container,false); 
    String id=this.getArguments().getString("id"); 
    return view; 
} 

und ich bin vorbei Bündel Wert von My recyclerView Adapter Klasse Bundle Wert abzurufen

+1

Was machen Sie mit der Methode 'startAddExpense'? – David

+0

@David es Aufruf Absicht, die Fragment-Aktivität zu starten – rookieDeveloper

+1

Würden Sie mir bitte die Zeile zeigen, wo Sie Ihr Fragment mit Fragment-Transaktion festschreiben? Ich nehme an, Sie beginnen nicht das Fragment, für das Sie die Argumente – David

Antwort

1

Das Problem hier ist einfach. Sie sind ein Fragment erstellen und Daten darauf einstellen, die in Ordnung ist,

AddExpenseFragment fragment=new AddExpenseFragment(); 
fragment.setArguments(bundle); 

Aber das Problem ist in Ihrem

UiActivity.startAddExpense(context); 

Sie mit einer neuen Instanz ersetzen muss des AddExpenseFragment, wie Sie sind Nein, wobei die neu erstellte Fragmentinstanz (mit den darauf gesetzten Argumenten) an die Methode startAddExpense() übergeben wird.

Die Lösung ist einfach, geben Sie einfach das neu Objekt erstellt Fragment auf das startAddExpense() wie folgt,

UiActivity.startAddExpense(context, fragment); 

und dann in dem Verfahren ersetzen oder dieses neue Fragment hinzufügen und instanziiert kein neues Fragment Objekt.

+0

in Ordnung, die das Problem sein könnte, wie füge ich Fragment beim Starten der Aktivität danke – rookieDeveloper

+0

froh, dass es Ihnen geholfen hat. Es ist eine völlig getrennte Frage und nicht damit verbunden. Es ist besser, eine separate Frage dafür zu stellen. Wenn Ihr Problem gelöst ist, akzeptieren Sie bitte die Antwort. Es hilft, die Community-Standards zu erhalten. –

0

Versuchen Sie folgendes:

Bundle bundle = this.getArguments(); 
String id=bundle.getString("id"); 
+0

nicht funktionieren, geben den gleichen Fehler – rookieDeveloper

0

Aus Ihrem Code ist es schwierig, Probleme zu finden. Geben Sie nur einige Vorschläge. Erstens, überprüfen Sie, ob Ihre Variable Kosten-ID null ist oder nicht. Zweitens, überprüfen Sie, ob die AddExpenseFragment, die Sie erstellt und wirklich angezeigt haben, identisch sind.