2016-05-06 24 views
1

Es gibt so viele Möglichkeiten, aber ich bin mit diesem ein:Daten von Aktivität zu Fragment Passing (durch Aktivität von Fragment zugreifen) geben Class Cast Exception

Aktivität:

public class Main2Activity extends AppCompatActivity{ 

private String myString = "hello"; 

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_my); 
    ... 
} 

public String getMyData() { 
    return myString; 
} 
} 

Fragment:

public class MyFragment extends android.support.v4.app.Fragment{ 

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

    Main2Activity activity = (Main2Activity) getActivity(); 
    String myDataFromActivity = activity.getMyData(); 
    return view; 
} 
} 

aber sein gibt mir Klasse Guss Ausnahme:

java.lang.ClassCastException: com.example.dev03.xyz.Activities.MainActivity cannot be cast to com.example.dev03.xyz.Fragments.MyActivity 

java.lang.ClassCastException: com.example.dev03.xyz.Fragments.MainActivity nicht

zu com.example.dev03.xyz.Fragments.Main2Activity gegossen werden - Das Paket ist das gleiche

Dank

+1

Zeigen Sie mir Ihren Code, wo Sie das Fragment gesetzt. – Masum

+0

Verwenden Sie Support-Bibliotheken? – Nfear

+0

Auf welche Aktivität setzen Sie Fragment? – nitinkumarp

Antwort

1

ein Objekt von MainActivity2 Erstellen und Zugriff einfach Ihre Methode:

MainActivity2 mn2=new ManiActivity2(); 
    mn2.getMyData(); 
0

Wechseln von android.app.Fragment zu support.v4.app.Fragment this.

+0

Fragment erweitert sich bereits android.support.v4.app.Fragment –

1

Sie öffnen Ihr Fragment in MainActivity und möchten in MyActivity umwandeln. Deshalb ist es ist Classcast zeigt

+0

Gute Arbeit Ich denke, Sie haben Recht –

+0

, aber die Situation ist gleich. Öffne dein Fragment in Main2Activity nicht in MainActivity –

+0

Aber ich möchte das Main2Activity.java-Ergebnis in MyFragment.java verwenden. Vielleicht verstehe ich es nicht. Kannst du mir ein kleines Beispiel geben –

0

in Ihrer Tätigkeit

Bundle bundle = new Bundle(); 
bundle.putString("name", "StackOverFlow"); 
// set Fragmentclass Arguments 
Fragmentclass stackOverflow = new Fragmentclass(); 
stackOverflow.setArguments(bundle); 

In Fragmente> onCreateView Methode.

String strName = getArguments().getString("name"); 
Verwandte Themen