简体   繁体   English

将数据从Activity传递到Fragment(通过访问来自fragment的Activity),从而给出Class Cast Exception

[英]Passing data from Activity to Fragment (by accessing activity from fragment) giving Class Cast Exception

There are so many ways but i am using this one: 有很多方法,但是我正在使用这种方法:

Activity: 活动:

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;
}
}

BUT its giving me class cast exception: 但是它给了我类强制转换异常:

 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 cannot be cast to com.example.dev03.xyz.Fragments.Main2Activity java.lang.ClassCastException:com.example.dev03.xyz.Fragments.MainActivity无法转换为com.example.dev03.xyz.Fragments.Main2Activity

-- Package is same -包装相同

Thanks 谢谢

You are opening your fragment in MainActivity and want to cast in MyActivity. 您正在MainActivity中打开片段,并想要投射到MyActivity中。 That's why it is showing ClassCastException 这就是为什么它显示ClassCastException

Create an object of MainActivity2 and simply access your method: 创建MainActivity2的对象并只需访问您的方法:

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

从android.app.Fragment更改为support.v4.app.Fragment。

In your Activity 在您的活动中

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

In Fragments > onCreateView Method. 在“片段”>“ onCreateView方法”中。

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

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM