2016-06-22 26 views
3

Ich habe eine Aktivität im Ordner Aktivitäten und ein Fragment im Ordner Fragmente erstellt. Schauen Sie, wie mein Fragment baut: http://i.stack.imgur.com/jIt9W.pngAndroid Studio ändern TextView-Fragment von Aktivität

Einige andere versuchten wie ich, indem Sie dies tun Android : Update Tab Layout(fragments) textviews from an activity, aber ich verstehe nicht, was die Lösung war.

Wie kann ich Daten wie String von Aktivität zu diesem Fragment senden und ich möchte es in Tab2 (wie im Bild)?

Ich versuche, viele Möglichkeiten, und ich finde nicht Lösung

Aus meiner Tätigkeit

Bundle bundle = new Bundle(); 
bundle.putString("edttext", "From Activity"); 
// set Fragmentclass Arguments 
Fragmentclass fragobj = new Fragmentclass(); 
fragobj.setArguments(bundle); 

Und von Fragment

String strtext = getArguments().getString("edttext");  

funktioniert nicht :(

Antwort

0

Ich kann eine alternative Lösung empfehlen - usi ng einer 3rd-Party-Bibliothek namens EventBus. Es ist sehr einfach zu bedienen und es ist sehr nützlich für verschiedene Szenarien. Erstellen Sie ein benutzerdefiniertes Ereignis, so etwas wie dieses:

public class MyEvent { 
private String text; 

public MyEvent(String text) { 
    this.text = text; 
} 

public String getText() { 
    return text; 
} 

public void setText(String text) { 
    this.text= text; 
} 

Und einfach in Ihrer Aktivität, posten Sie diese Veranstaltung mit dem Text, den Sie an das Fragment senden möchten:

EventBus.getDefault().post(new MyEvent(yourTextString); 

Jetzt melden Sie sich einfach die EventBus in onCreate Ihr Fragment:

EventBus.getDefault().register(this); 

und ein Verfahren schaffen, wie dies für den Fall hört:

@Subscribe 
public void onMyEvent(MyEvent myEvent){ 
    String text = myEvent.getText(); 
    //Now you can do whatever you wish with this text 
} 
+0

Danke für Antwort, ich diese Bibliothek hinzufügen müssen? wenn ja wie und wo? – sharon2469

+0

Sie müssen diese Bibliothek hinzufügen. Befolgen Sie die Anleitung, wie Sie beginnen können. – Vucko

+0

Schön! Diese Bibliothek wird viele Ihrer Probleme beheben :) Überlegen Sie, die Antwort zu akzeptieren, wenn Sie mit der Lösung zufrieden sind :) – Vucko

0
public class ListAdapter extends BaseAdapter 
{ 
Context context; 
List<cources> valueList; 

public ListAdapter(List<cources> listValue, Context context) 
{ 
    this.context = context; 
    this.valueList = listValue; 
} 

@Override 
public int getCount() 
{ 
    return this.valueList.size(); 
} 

@Override 
public Object getItem(int position) 
{ 
    return this.valueList.get(position); 
} 

@Override 
public long getItemId(int position) 
{ 
    return position; 
} 

@Override 
public View getView(int position, View convertView, ViewGroup parent) 
{ 
    ViewItem viewItem = null; 
    if(convertView == null) 
    { 
     viewItem = new ViewItem(); 
     LayoutInflater layoutInfiater = (LayoutInflater)this.context.getSystemService(Activity.LAYOUT_INFLATER_SERVICE); 
     //LayoutInflater layoutInfiater = LayoutInflater.from(context); 
     convertView = layoutInfiater.inflate(R.layout.list_adapter_view, null); 

     viewItem.txtNamePlanche = (TextView)convertView.findViewById(R.id.Tx_name_planche); 
     viewItem.txtPriceBaget = (TextView)convertView.findViewById(R.id.Tx_price_baget); 
     viewItem.txtPricePlate = (TextView)convertView.findViewById(R.id.Tx_price_plate); 
     convertView.setTag(viewItem); 
    } 
    else 
    { 
     viewItem = (ViewItem) convertView.getTag(); 
    } 

    viewItem.txtNamePlanche.setText(valueList.get(position).name); 
    viewItem.txtPriceBaget.setText(valueList.get(position).price_baget); 
    viewItem.txtPricePlate.setText(valueList.get(position).price_plate); 
    return convertView; 
} 

}

und ViewItem

class ViewItem 
{ 
TextView txtNamePlanche; 
TextView txtPricePlate; 
TextView txtPriceBaget; 
} 
Verwandte Themen