2016-04-07 5 views
-1

Jetzt versuche ich, Daten von einem Fragment an ein anderes Fragment zu übergeben.Daten von einer Fragmentierung an eine andere Fragmentierungsfunktion übergeben

zum Beispiel

Fragment eines

listView.setOnItemClickListener(new AdapterView.OnItemClickListener() { 
@Override 
public void onItemClick(AdapterView<?> parent, View view, int position, long id) { 
//DB Connection 
... 
... 
values_description = stringArrayList_description.toArray(new String[stringArrayList_description.size()]); 
Fragmenttwo frag_two = new Fragmenttwo(); 
Bundle args = new Bundle(); 
args.putString("data","data12344"); 
frag_two.setArguments(args); 
getFragmentManager().beginTransaction().add(R.id.text_view,frag_two); 
//Toast.makeText(getActivity(),"position"+parent.getItemAtPosition(position),Toa st.LENGTH_SHORT).show(); 
} 
}); 

Zweiter Teil

public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { 
    View view = inflater.inflate(R.layout.fragment_listview_two, container, false); 
    textView = (TextView)view.findViewById(R.id.text_view); 
    Bundle bundle = this.getArguments(); 
    value = bundle.getString("data","nulll"); 
    setData(value); 
    return view; 
} 

public void setData(String data){ 
    textView.setText(data); 
} 

Aber ich nicht in der Lage ist, die Daten aus der zweiten Fragmentierung zu erhalten, wirft es Fehler wie,

04-07 11:24:03.887 2937-2937/com.ats.test E/AndroidRuntime: FATAL EXCEPTION: main 
Process: com.ats.test, PID: 2937      
android.view.InflateException: Binary XML file line #13: Error inflating class fragment 
at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:719) 
at android.view.LayoutInflater.rInflate(LayoutInflater.java:761) 
at android.view.LayoutInflater.inflate(LayoutInflater.java:498) 
at android.view.LayoutInflater.inflate(LayoutInflater.java:398) 
at fragments.Callhistory_Fragment.onCreateView(Callhistory_Fragment.java:35) 
at android.app.Fragment.performCreateView(Fragment.java:1700) 
at android.app.FragmentManagerImpl.moveToState(FragmentManager.java:890) 
at android.app.FragmentManagerImpl.moveToState(FragmentManager.java:1062) 
at android.app.BackStackRecord.run(BackStackRecord.java:684) 
at android.app.FragmentManagerImpl.execPendingActions(FragmentManager.java:1453) 
at android.app.FragmentManagerImpl$1.run(FragmentManager.java:443) 
at android.os.Handler.handleCallback(Handler.java:733) 
at android.os.Handler.dispatchMessage(Handler.java:95) 
at android.os.Looper.loop(Looper.java:146) 
at android.app.ActivityThread.main(ActivityThread.java:5511) 
at java.lang.reflect.Method.invokeNative(Native Method) 
at java.lang.reflect.Method.invoke(Method.java:515) 
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1283) 
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1099) 
at dalvik.system.NativeStart.main(Native Method) 
Caused by: java.lang.NullPointerException 
at fragments.Fragmenttwo.onCreateView(Fragmenttwo.java:27) 
at android.app.Fragment.performCreateView(Fragment.java:1700) 
at android.app.FragmentManagerImpl.moveToState(FragmentManager.java:866) 
at android.app.FragmentManagerImpl.moveToState(FragmentManager.java:1040) 
at android.app.FragmentManagerImpl.addFragment(FragmentManager.java:1142) 
at android.app.Activity.onCreateView(Activity.java:4877) 
at android.support.v4.app.BaseFragmentActivityHoneycomb.onCreateView(BaseFragmentActivityHoneycomb.java:34) 
at android.support.v4.app.FragmentActivity.onCreateView(FragmentActivity.java:80) 
at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:695) 
at android.view.LayoutInflater.rInflate(LayoutInflater.java:761)  
at android.view.LayoutInflater.inflate(LayoutInflater.java:498)  
at android.view.LayoutInflater.inflate(LayoutInflater.java:398)  
at fragments.Callhistory_Fragment.onCreateView(Callhistory_Fragment.java:35)  
at android.app.Fragment.performCreateView(Fragment.java:1700)  
at android.app.FragmentManagerImpl.moveToState(FragmentManager.java:890)  
at android.app.FragmentManagerImpl.moveToState(FragmentManager.java:1062)  
at android.app.BackStackRecord.run(BackStackRecord.java:684)  
at android.app.FragmentManagerImpl.execPendingActions(FragmentManager.java:1453)  
at android.app.FragmentManagerImpl$1.run(FragmentManager.java:443)  
at android.os.Handler.handleCallback(Handler.java:733)  
at android.os.Handler.dispatchMessage(Handler.java:95)  
at android.os.Looper.loop(Looper.java:146)  
at android.app.ActivityThread.main(ActivityThread.java:5511)  
at java.lang.reflect.Method.invokeNative(Native Method)  
at java.lang.reflect.Method.invoke(Method.java:515)  
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1283) 
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1099)  
at dalvik.system.NativeStart.main(Native Method)  

Fragment zu handhaben weitere Fragmente (fragmentone und fragmenttwo)

<fragment 
    android:layout_width="206dp" 
    android:layout_height="match_parent" 
    android:id="@+id/fragment1" 
    android:layout_weight="1" 
    android:name="fragments.Fragmentone" 
    android:layout_gravity="left|center_vertical"></fragment> 

<fragment 
    android:layout_width="164dp" 
    android:layout_height="match_parent" 
    android:id="@+id/fragment2" 
    android:layout_weight="1" 
    android:name="fragments.Fragmenttwo" 
    android:layout_gravity="right|center_vertical" 
    ></fragment> 

    </FrameLayout> 

R.Layout.fragment_listview_two.xml

<?xml version="1.0" encoding="utf-8"?> 
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
android:orientation="vertical" android:layout_width="match_parent" 
android:layout_height="match_parent" 
android:background="#f467f7"> 
<TextView 
android:layout_width="match_parent" 
android:layout_height="wrap_content" 
android:id="@+id/text_view" 
android:text="description \n here" 
android:textColor="#000000" 
android:textAppearance="?android:textAppearanceLarge"/> 

</LinearLayout> 

Bitte führen Sie mir, ich weiß nicht, wo ich Fehler gemacht haben.

+0

Ihre fragment_listview_two.xml veröffentlichen ... Es enthält Fehler ... –

+0

als Protokoll sagt, daß es ein Problem ist, xml, es ist nicht eine Frage der Datenweitergabe in Aufpumpen . –

+0

wie dieses aufblasen Problem zu lösen und ich auch NullPointerException zu Ich weiß nicht, wo diese Ausnahme ausgelöst wird –

Antwort

0

Try This ..

In Sie FromFragment:

Fragment fragment = new Fragment(); // replace your custom fragment class 
Bundle bundle = new Bundle(); 
FragmentTransaction fragmentTransaction = getSupportFragmentManager().beginTransaction(); 
bundle.putString("key","value"); // use as per your need 
fragment.setArguments(bundle); 
fragmentTransaction.addToBackStack(null); 
fragmentTransaction.replace(viewID,fragment); 
fragmentTransaction.commit(); 

In benutzerdefinierten Fragment Klasse

Bundle mBundle = new Bundle(); 
mBundle = getArguments(); 
mBundle.getString(key); 

// Schlüssel muss gleich was wa sein s in der ersten Fragment gegeben

+0

Bitte erläutern Sie mir eindeutig über die Zeile getFragmentManager(). beginTransaction() .replace (R.id.body, toFragment, TAG_TO_FRAGMENT) .addToBackStack (TAG_TO_FRAGMENT).verpflichten(); –

+0

zuerst versuchst du einfach .commit() in deinem code ... wenn es funktioniert oder nicht ??? –

+0

ersetzen (R.id.body, toFragment, frag_two) .addToBackStack (frag_two ODER null) .commit(); –

0

Versuchen Sie es !!!! !

add Bündel = null auf

public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { 
View view = inflater.inflate(R.layout.fragment_listview_two, container, false); 
textView = (TextView)view.findViewById(R.id.text_view); 
Bundle bundle = this.getArguments(); 
if(bundle != null){ 

value = bundle.getString("data"); 
setData(value); 
} 

return view; 
} 

public void setData(String data){ 
textView.setText(data); 
} 
0

Sie benötigen Fragment so zu begehen:

 getFragmentManager().beginTransaction().add(R.id.text_view,frag_two).commit(); 
+0

Ich habe versucht, wie Sie sagten, aber ich habe Fehler wie java.lang.ClassCastException: android.support.v7.widget.AppCompatTextView kann nicht auf android.view.ViewGroup –

+0

@ShivaKumar umgewandelt werden können Sie R.layout.fragment_listview_two posten oder mir sagen, dass Sie AppCompatTextView oder TextView dort deklariert haben? –

+0

Ich postete R.layout.fragment_listview_two.xml und ich benutzte dort Textview –

0

Sie können einfache Pass alle Daten an das zweite Fragment Konstruktor.

String text = "test"; 


SecondFragment fragment = new SecondFragment(text); 
     FragmentManager fragmentManager = getActivity().getSupportFragmentManager(); 
     FragmentTransaction fragmentTransaction = fragmentManager.beginTransaction(); 
     fragmentTransaction.replace(R.id.content_frame, fragment); 
     fragmentTransaction.addToBackStack(null); 
     fragmentTransaction.commit(); 

Dann bei SecondFragment

String receivingText; 


public SecondFragment(String text){ 
     this.receivingText = text; 
} 
+0

wir können nicht einen Nicht-Standard-Konstruktor für die Fragmentklasse –

+0

erstellen, bitte erklären Sie genau, was Sie meinen? – TharakaNirmana

+0

für jede erweiterte Klasse von Fragmenten können wir keine nicht standardmäßige Konstruktorklasse erstellen (contstructor mit einem Parameter) –

Verwandte Themen