将数据从Activity传递到Fragment(通过从Fragment访问活动),从而产生Class Cast异常



有很多方法,但我使用的是:

活动:

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.dev.03.xyz Fragments.Main2Activity

--包装与相同

感谢

创建MainActivity2的对象并简单地访问您的方法:

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

您正在MainActivity中打开您的片段,并希望在MyActivity中进行强制转换。这就是为什么它显示ClassCastException

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

在您的活动中

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

在片段>onCreateView方法中。

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

最新更新