1

Ich habe 2 Aktivitäten MainActivity und DetailActivity, wenn ich in der ListView in MainActivity werde Absicht zu DetailActivity mit Inhalt "ID", in DetailActivity Ich habe 2 Fragment (TabLayout-ViewPager).Wie kann Fragment Daten von parentActivity erhalten?

Meine Frage ist: Wie kann Fragment bekommen "ID" von dieser Absicht oben ???

+1

'getActivity(). getIntent()'? Aber Sie sollten die Daten der Absicht wahrscheinlich "nach unten" zum Fragment weitergeben, anstatt dafür "nach oben zu greifen". –

Antwort

0

von Android Developer's Fragment Page

DetailsFragment f = new DetailsFragment(); 

// Supply index input as an argument. 
Bundle args = new Bundle(); 
args.putInt("index", index); 
f.setArguments(args); 

// add fragment to the fragment manager's stack 
1

Fragment in android , wenn Android später Ihr Fragment neu entscheidet, den Konstruktor ohne Argumente des Fragments nennen los ist. Eine Überladung des Konstruktors ist also keine Lösung. for more detail please read this stack overflow answer

private int mId; 
private static final String ID = "id"; 
public static DetailsFragment newInstance(int id) { 
    DetailsFragment fragment = new DetailsFragment(); 
    Bundle args = new Bundle(); 
    args.putInt(ID, id); 

    fragment.setArguments(args); 
    return fragment; 
} 

get Werte in oncreate Methode

@Override

 public void onCreate(Bundle savedInstanceState) { 
      super.onCreate(savedInstanceState); 
      if (getArguments() != null) 
//mId is variable which contain (YourActivity)MainActivity value.you can use in fragment. 
       mId = getArguments().getInt(ID); 


     } 

// Anruf in Ihrem YourActivity (MainActivity) in oncreate Methode

int id = yourid; 
     getSupportFragmentManager().beginTransaction().replace(R.id.fragment_container,DetailFragment.newInstance(id)).commit(); 
+0

gute Antwort, aber ein bisschen mehr beschreibenden Text Ihre Antwort zu erklären, sollten Sie Ihre Antwort erhalten helfen akzeptiert – CSmith

+0

@CSmith plz lese ich meine Antwort bearbeiten .... –

+0

get NullException .. hier My-Code http: // Pastebin. com/eefYxPba – Ahmad

0

Wie @ cricket_007 sagt, Erstellen Sie eine Factory-Methode in Ihrem Fragment und übergeben Sie die Daten durch Paketargumente r das Beispiel unter

public static YourFragment newInstance(Bundle args) { 
     Yourfragment fragment = new YourFragment(); 
     Bundle bundle = args; 
     // Or if your args is a variable data for example a string 
     // use Bundle bundle = new Bundle(); bundle.putString("extra_name",value); 
     // Now set the fragment arguments 
     fragment.setArguments(bundle); 
    return fragment; 
} 

Und jetzt überall in Ihrem Fragment können Sie tun

Bundle args = getArguments(); 
// and access your extra by args.getString("extra_name"); ...