如何从函数中添加片段?

时间:2015-08-17 12:00:39

标签: java android android-fragments

我想在屏幕上创建带有背景的片段以进行加载查询。

它无法正常工作,我无法在屏幕上看到片段

public class internet {
    startQueryAsync(final Activity activity) {

       new Thread() {

            RelativeLayout backView = new RelativeLayout(activity);

            @Override
            public void run() {
                activity.runOnUiThread(new Runnable() {
                    @Override
                    public void run() {

                        FragmentLoad fr = new FragmentLoad();
                        activity.getFragmentManager().beginTransaction().add(android.R.id.content, fr);
                    }
                });
            }
        }.start();
   }
}


public class FragmentLoad extends Fragment {

    public FragmentLoad() {
        super();
    }

    @Nullable
    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {

       View view = inflater.inflate(R.layout.fragment_load, container);
       view.setLayoutParams(lpFr);

       return view;
    }
}

我不明白为什么它不起作用。

2 个答案:

答案 0 :(得分:0)

您尚未提交片段交易。像这样改变你的方法

public void run() {
    FragmentLoad fr = new FragmentLoad();
    activity.getFragmentManager().beginTransaction().add(android.R.id.content, fr).commit(); // change this
}

答案 1 :(得分:0)

您忘了执行commit();的{​​{1}}。

例如:

fragment

您也可以使用Fluent Interface Pattern

activity.runOnUiThread(new Runnable() {
    @Override
    public void run() {
        // First, create your FragmentManager.
        FragmentManager manager = activity.getFragmentManager();

        // Then, create your transaction.
        FragmentTransaction transaction = manager.beginTransaction();

        // Add your fragment in the view.
        transaction.add(android.R.id.content, new FragmentLoad());

        // Commit the transaction.
        transaction.commit();
    }
});

有关详细信息,请参阅Google Fragment Documentation

希望这有帮助。