EGH*_*HDK 57 java android android-fragments
当我在我的程序中输入该代码时,我得到一个错误,如下图所示.

出错的原因是什么?
The method replace(int, Fragment) in the type FragmentTransaction is not applicable for the arguments (int, ExampleFragments)
我的主要活动代码:
public void red(View view) {
android.app.FragmentManager fragmentManager = getFragmentManager();
android.app.FragmentTransaction fragmentTransaction = fragmentManager.beginTransaction();
ExampleFragments fragment = new ExampleFragments();
fragmentTransaction.replace(R.id.frag, fragment);
fragmentTransaction.commit();
}
Run Code Online (Sandbox Code Playgroud)
ExampleFragments.java
package com.example.learn.fragments;
import android.os.Bundle;
import android.support.v4.app.Fragment;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
public class ExampleFragments extends Fragment {
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
// Inflate the layout for this fragment
return inflater.inflate(R.layout.blue_pill_frag, container, false);
}
}
Run Code Online (Sandbox Code Playgroud)
这里:
package com.example.learn.fragments;
import android.app.Activity;
import android.os.Bundle;
import android.support.v4.app.Fragment;
import android.support.v4.app.FragmentManager;
import android.support.v4.app.FragmentTransaction;
import android.view.LayoutInflater;
import android.view.Menu;
import android.view.View;
import android.view.ViewGroup;
Run Code Online (Sandbox Code Playgroud)
Eri*_*ric 166
这里的问题是你正在混合android.support.v4.app.Fragment和android.app.Fragment.您需要转换所有用途以使用支持库,这也意味着调用getSupportFragmentManager().
像这样的东西,例如:
android.support.v4.app.FragmentManager fragmentManager = getSupportFragmentManager();
android.support.v4.app.FragmentTransaction fragmentTransaction = fragmentManager.beginTransaction();
ExampleFragments fragment = new ExampleFragments();
fragmentTransaction.replace(R.id.frag, fragment);
fragmentTransaction.commit();
Run Code Online (Sandbox Code Playgroud)
重要的是要注意支持库Fragment和法线Fragment不可互换.它们实现了相同的目的,但它们不能在代码中相互替换.
虽然这个问题可能已得到解答,但应该注意的是,重叠片段的解决方案是使用新的"片段"实例获取片段ID(实际上是在xml中声明的FrameLayout id会导致头痛):
FragmentManager fragmentManager = getSupportFragmentManager();
FragmentTransaction fragmentTransaction = fragmentManager.beginTransaction();
Fragment fragment = new ExampleFragments();
fragmentTransaction.replace(R.id.frag, fragment);
fragmentTransaction.commit();
Run Code Online (Sandbox Code Playgroud)
我不能告诉你我在邮寄后没有解决方案花了多少小时.我在上面的评论中读到了你的另一篇帖子,我也会在那里回答,以防有人先发现.
对于那些正在获得的人ClassCastException,请尝试这一点.您可以使用FragmentActivity代替的方法添加所有正确的库Fragment,并在代码中使用getActivity().getSupportFragmentManager来阻止ListFragment中的错误,并且您仍然会遇到Fragments的问题.Google文档并没有向您显示所有内容,Eclipse代码完成并不总能为您节省...有时您只需自己修复错误!
| 归档时间: |
|
| 查看次数: |
81491 次 |
| 最近记录: |