2017-04-08 2 views
0

Ich versuche, ein Datum in meinem Fragment durch einen Dialog zu ändern, die in meiner Tätigkeit deklarieren, aber ich kann die TextView aus meiner TätigkeitSatz Textview aus in Fragmente aus Aktivität

dieser Teil in meiner Tätigkeit deklariert

nicht bearbeiten
protected Dialog onCreateDialog(int id) { 
    // TODO Auto-generated method stub 
    if (id == 999) { 
     return new DatePickerDialog(this, 
       myDateListener, year, month, day); 
    } 
private DatePickerDialog.OnDateSetListener myDateListener = new 
     DatePickerDialog.OnDateSetListener() { 
      @Override 
      public void onDateSet(DatePicker arg0, 
            int arg1, int arg2, int arg3) { 
       // TODO Auto-generated method stub 
       // arg1 = year 
       // arg2 = month 
       // arg3 = day 
       showDate(arg1, arg2+1, arg3); 
      } 
     }; 

private void showDate(int year, int month, int day) { 

    abbes = new StringBuilder().append(day).append("/") 
      .append(month).append("/").append(year); 
    android.support.v4.app.Fragment fragment = null; 
    fragment = new Fragment7(); 
    Bundle bundle =new Bundle(); 
    bundle.putString("Radio", String.valueOf(abbes)); 
    fragment.setArguments(bundle); 
    Toast.makeText(this, ""+abbes, Toast.LENGTH_LONG).show(); 


} 

ich mit einem Toast geprüft, wenn ich das Datum durch den Dialog in meiner Tätigkeit ändert ändern, also versuchte ich die Saite meiner Fragment nur sendet es nichts zu senden, und ich habe deshalb nicht verstanden!

Und in meinem Fragment

if (getArguments() != null) { 
     abbes1 = this.getArguments().getString("Radio"); 
     name.setText(abbes1); 
    } 

Antwort

0

Sie müssen die Daten von Ihrem Fragmente zu Ihrem Container Aktivität senden. Sie können dazu einfach eine Schnittstelle verwenden. Sie müssen die Daten an eine Schnittstellenmethode übergeben. Implementieren Sie diese Schnittstelle in Ihrer Aktivität, überschreiben Sie ihre Methode, und Sie haben Ihre Daten in der Aktivität. Dies ist der modularste Ansatz und vermeidet auch Speicherlecks. Als Referenz können Sie sich diese link ansehen.

Andernfalls können Sie die Methode Ihrer Containeraktivität direkt von Ihrem Fragment aufrufen und den darin enthaltenen Datenwert übergeben. Wie folgt aus: ((YourContainerActivity)getActivity()).yourMethodInActivity(yourParams);

Für sendind Daten von Aktivität Fragment:

Bundle bundle = new Bundle(); 
    bundle.putString("edttext", "From Activity"); 
    // set Fragmentclass Arguments 
    Fragmentclass fragobj = new Fragmentclass(); 
    fragobj.setArguments(bundle); 
FragmentManager fragmentManager = getSupportFragmentManager(); 
     FragmentTransaction fragmentTransaction = fragmentManager.beginTransaction(); 
fragmentTransaction.replace(R.id.container_layout,fragobj,"FragmentClass"); 
fragmentTransaction.commit(); 

In Ihrem Fragment können Sie getArguments() verwenden, um das Bündel zu erhalten.

+0

Ich möchte Daten zu meinem Fragment von meiner Aktivität senden! –

+0

siehe meine aktualisierte Antwort –

+0

Das ist, was ich getan habe, und es funktioniert nicht –

Verwandte Themen