在ViewPager中处理事务后,ListFragment显示空白屏幕

二进制灌木

我正在尝试执行的操作
创建一个ListFragment(位于ViewPager内),将其替换为一个新的ListFragment,其中包含基于上一个列表的单击位置的新数据的新数据。

我遇到的问题
在onListItemClick之后,屏幕上没有显示任何内容。我考虑过只是清除ListAdapter而不是初始化多个ListFragments,但是我想保留backStack(我不知道如何在没有Fragment Transactions的情况下保留backStack)



MainActivity.java

import android.os.Bundle;
import android.support.v4.app.Fragment;
import android.support.v4.app.FragmentActivity;
import android.support.v4.app.FragmentManager;
import android.support.v4.app.FragmentPagerAdapter;
import android.support.v4.view.ViewPager;


public class MainActivity extends FragmentActivity {

    private ViewPager mPager;
    private MainPagerAdapter mPagerAdapter;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        mPagerAdapter = new MainPagerAdapter(this.getSupportFragmentManager());
        mPager = (ViewPager) this.findViewById(R.id.fragment_container);
        mPager.setAdapter(mPagerAdapter);
    }

    private class MainPagerAdapter extends FragmentPagerAdapter {
        public MainPagerAdapter(FragmentManager fm) {
            super(fm);
        }

        @Override
        public Fragment getItem(int position) {
            return new MyListFragment(); //Simplified for the post
        }

        @Override
        public int getCount() {
            return 1; //Simplified for the post
        }
    }
}



MyListFragment.java

import java.util.ArrayList;

import android.os.Bundle;
import android.support.v4.app.ListFragment;
import android.view.View;
import android.widget.ArrayAdapter;
import android.widget.ListView;

public class MyListFragment extends ListFragment {
    private ArrayList<String> titles;

    public MyListFragment() {
        titles = new ArrayList<String>();
        titles.add("one");titles.add("two");titles.add("three");
    }

    public MyListFragment(ArrayList<String> titles) {
        this.titles = titles;
    }

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        this.setListAdapter(new MyListAdapter());
    }

    @Override
    public void onListItemClick (ListView l, View v, int position, long id) {
        ArrayList<String> list = new ArrayList<String>();
        list.add("1");list.add("2");list.add("3");

        getFragmentManager().beginTransaction()
            .replace(R.id.fragment_container, new MyListFragment(list))
            .addToBackStack(null)
            .commit();
    }

    private class MyListAdapter extends ArrayAdapter<String> {
        public MyListAdapter() {
            super(getActivity(), android.R.layout.simple_list_item_1, titles);
        }
    }
}



activity_main.xml

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent" >

    <android.support.v4.view.ViewPager android:id="@+id/fragment_container"
        android:layout_width="match_parent"
        android:layout_height="match_parent" />

</RelativeLayout>
二进制灌木

终于想通了。我创建了一个ListRootFragment,它将膨胀其布局并添加到ListFragment中。

ListRootFragment.java

import android.os.Bundle;
import android.support.v4.app.Fragment;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;

public class ListRootFragment extends Fragment {
    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container,
            Bundle savedInstanceState) {
        // Inflate the layout for this fragment
        View view = inflater.inflate(R.layout.fragment, container, false);

        this.getActivity().getSupportFragmentManager().beginTransaction()
            .replace(R.id.fragment, new MyListFragment())
            .commit();

        return view;
    }
}



fragment.xml

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical"
    android:id="@+id/fragment" >

</LinearLayout>



更新了MainActivity.java

import android.os.Bundle;
import android.support.v4.app.Fragment;
import android.support.v4.app.FragmentActivity;
import android.support.v4.app.FragmentManager;
import android.support.v4.app.FragmentStatePagerAdapter;
import android.support.v4.view.ViewPager;


public class MainActivity extends FragmentActivity {

    ...

    private class MainPagerAdapter extends FragmentStatePagerAdapter {
        ...

        @Override
        public Fragment getItem(int position) {
            return new ListRootFragment();
        }

        ...
    }
}

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

Titan Graph DB:在IdGraph中处理事务

来自分类Dev

OnBack Press Fragment显示空白屏幕

来自分类Dev

在foreach循环中插入列表时如何处理事务

来自分类Dev

UIWebView在iOS 8中显示空白屏幕

来自分类Dev

加载时,UIWebView显示空白屏幕

来自分类Dev

在DBI下使用批处理事务DELETE进行InnoDB锁定穷举

来自分类Dev

手动处理事务而不是JtaTransactionManager

来自分类Dev

如何在Java EE环境中使用JMS和JPA处理事务回滚?

来自分类Dev

初始屏幕显示为空白屏幕

来自分类Dev

在C#循环中调用SQL存储过程时处理事务

来自分类Dev

VSCode中的终端在Ubuntu 18中显示空白屏幕

来自分类Dev

UITabBarController显示空白屏幕

来自分类Dev

错误:返回的错误:处理事务时VM异常:使用New创建时还原

来自分类Dev

Windows 7从睡眠模式恢复后显示空白屏幕

来自分类Dev

在foreach循环中插入列表时如何处理事务

来自分类Dev

webView.loadUrl显示空白屏幕

来自分类Dev

Android:从Intent支持后显示空白屏幕

来自分类Dev

SQL适配器可以处理事务(开始/插入/回滚)吗?

来自分类Dev

骆驼异常/错误处理事务路由而不会导致客户端异常

来自分类Dev

PHP文件编写显示空白屏幕

来自分类Dev

iOS UITableView reloadData显示空白屏幕

来自分类Dev

导入显示空白屏幕的WordPress

来自分类Dev

如何在Fabric8中处理事务日志?

来自分类Dev

Google Maps Activity显示空白屏幕

来自分类Dev

PHP Googlemaps 显示空白屏幕

来自分类Dev

单击 webview 中的链接时,webview 显示空白屏幕

来自分类Dev

android中显示的空白屏幕pdf

来自分类Dev

会话登录后的空白屏幕

来自分类Dev

Firebase RTDB 批处理事务(同时增加 2 个值)

Related 相关文章

热门标签

归档