繁体   English   中英

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

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

有很多方法,但是我正在使用这种方法:

活动:

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

分段:

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

但是它给了我类强制转换异常:

 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无法转换为com.example.dev03.xyz.Fragments.Main2Activity

-包装相同

谢谢

您正在MainActivity中打开片段,并想要投射到MyActivity中。 这就是为什么它显示ClassCastException

创建MainActivity2的对象并只需访问您的方法:

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

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

在您的活动中

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

在“片段”>“ onCreateView方法”中。

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

暂无
暂无

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

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