相关疑难解决方法(0)

getSupportFragmentManager()和getChildFragmentManager()有什么区别?

我的类继承了Fragment,这就是为什么它不能使用getSupportFragmentManager().我正在使用getChildFragmentManager,它显示错误 - IllegalArguementException:找不到id ...错误的视图.

任何指导将不胜感激.

调用AttachmentsListFragment的代码是

Bundle b = new Bundle();
b.putSerializable("AttachmentsList", msg.attachments);  
        AttachmentListFragment listfrag = new AttachmentListFragment(msg.attachments);
FragmentTransaction transaction = getFragmentManager().beginTransaction();       
transaction.add(R.id.attachmentslistcontainer, listfrag);
transaction.addToBackStack(null);
transaction.commit();
Run Code Online (Sandbox Code Playgroud)

attachmentslayout.xml是

<?xml version="1.0" encoding="utf-8"?>
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:id="@+id/attachmentslistcontainer"
    android:orientation="vertical" >

    <TextView
        android:id="@+id/textViewAttachmentHeader"
        style="@style/Normal.Header.Toolbar"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:background="@color/list_separator_background"
        android:ellipsize="end"
        android:gravity="center"
        android:maxLines="2"
        android:text="@string/attachments_header"
        android:textColor="#FFFFFFFF"
        android:textSize="22sp"
        android:textStyle="bold"
        android:visibility="visible" />

    <ListView
        android:id="@android:id/list"
        android:layout_width="fill_parent"
        android:layout_height="fill_parent" >
    </ListView>

</FrameLayout>
Run Code Online (Sandbox Code Playgroud)

AttachmentsListFragment.java

public class AttachmentListFragment extends ListFragment implements IAttachmentsData {

    ArrayList<Attachments> items = null;
    Integer cellLayoutID;
    Integer index;

    public AttachmentListFragment() {

    } …
Run Code Online (Sandbox Code Playgroud)

android android-fragments android-listfragment

64
推荐指数
3
解决办法
4万
查看次数

Android:嵌套片段的父片段

getParentFragment()来自我的嵌套片段的A 返回一个null.我意识到获得一个null意味着片段附加到活动而不是嵌套容器片段.但我明确地使用孩子将子片段嵌套在父片段中FragmentManager,因此认为我不应该得到一个null.你能告诉我我错过了什么吗?

父片段

public class UsageBreakUp extends Fragment implements Filter.OnFragmentInteractionListener {

  ....

  @Override
    public void onViewCreated(View view, @Nullable Bundle savedInstanceState) {
        super.onViewCreated(view, savedInstanceState);
        getChildFragmentManager().beginTransaction().add(R.id.filter, new Filter()).commit();
    }

...

}
Run Code Online (Sandbox Code Playgroud)

儿童片段

public class Filter extends Fragment {

...


    public Filter() {
        if (getParentFragment() == null)
            Log.d(LOG_TAG, "parent fragment is null");
    }

...

}
Run Code Online (Sandbox Code Playgroud)

android android-fragments android-nested-fragment

22
推荐指数
1
解决办法
2万
查看次数

android - 在orrientation之后更改对话框片段中的目标片段更改

我有一个片段,它为选项菜单添加了一个选项.单击此选项时,将打开一个对话框片段.该对话框将原始片段设置为其目标片段.如果在对话框片段打开时没有发生方向改变,则目标片段与预期一样,但是在方向改变之后,目标片段被设置为对话框片段本身而不是先前设置的片段.因此,当我尝试将目标片段转换为设置为目标片段的片段时,我得到了一个classCastException.我需要在对话框中获取目标片段,因为它实现了一个回调(OnStartOrRestartLoader).我一直试图解决这个问题超过一个星期,如果有人能指出我正确的方向,我真的很感激.由于这是我的第一个问题,如果我排除了一些必要的信息,或者这不是一个合适的问题,我会道歉.

在实现OnStartOrRestartLoader的片段(VirsārstsFragment)中,我创建了如下对话框:

FragmentManager fm = getChildFragmentManager();
SearchDialogFragment dialog = new SearchDialogFragment();
dialog.show(fm, "searchDialog");
dialog.setTargetFragment(this, DIALOGFRAGMENT);
Run Code Online (Sandbox Code Playgroud)

然后在SearchDialogFragment中,我执行以下操作来设置回调:

OnStartOrRestartLoader callback = (OnStartOrRestartLoader) getTargetFragment();
Run Code Online (Sandbox Code Playgroud)

logcat的:

08-25 12:15:55.087: E/AndroidRuntime(10057): FATAL EXCEPTION: main
08-25 12:15:55.087: E/AndroidRuntime(10057): Process: com.example, PID: 10057
08-25 12:15:55.087: E/AndroidRuntime(10057): java.lang.RuntimeException: Unable to start activity ComponentInfo{com.example/com.example.MainActivity}: java.lang.ClassCastException: com.example.SearchDialogFragment cannot be cast to com.example.OnStartOrRestartLoader
08-25 12:15:55.087: E/AndroidRuntime(10057):    at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2224)
08-25 12:15:55.087: E/AndroidRuntime(10057):    at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2273)
08-25 12:15:55.087: E/AndroidRuntime(10057):    at android.app.ActivityThread.handleRelaunchActivity(ActivityThread.java:3759)
08-25 12:15:55.087: E/AndroidRuntime(10057):    at android.app.ActivityThread.access$900(ActivityThread.java:141)
08-25 12:15:55.087: E/AndroidRuntime(10057):    at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1208)
08-25 12:15:55.087: E/AndroidRuntime(10057):    at …
Run Code Online (Sandbox Code Playgroud)

android android-fragments android-dialogfragment

5
推荐指数
1
解决办法
1444
查看次数

Android getParentFragment()在Fragment中的ViewPager中返回null

我有一个Activity包含Fragmenta ViewPager.然后我Fragment在ViewPager中调用a的方法.但是如果那个Fragment然后调用getParentFragment(),它返回null.

为什么是getParentFragment()null?


包含ViewPager的主要片段:

public class MyFragment extends Fragment {
    private TabLayout mTabLayout;
    private ViewPager mViewPager;
    private ViewPagerAdapter mAdapter;

    @Override
    public void onActivityCreated(@Nullable Bundle savedInstanceState) {
        super.onActivityCreated(savedInstanceState);
        View view = getView();

        // Setup the ViewPager
        mViewPager = (ViewPager) view.findViewById(R.id.container);

        ViewPagerAdapter adapter = new ViewPagerAdapter(getChildFragmentManager(), getActivity());
        mViewPager.setAdapter(adapter);
        //setupViewPager(mViewPager);

        // Setup the TabLayout
        mTabLayout = (TabLayout) view.findViewById(R.id.tabs);
        mTabLayout.setupWithViewPager(mViewPager);
    }

    // This method is called from Activity.
    public void callNestedFragment() {
        if …
Run Code Online (Sandbox Code Playgroud)

java android nullpointerexception android-fragments android-viewpager

5
推荐指数
1
解决办法
2562
查看次数