有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java如何从函数中添加片段?

我想在屏幕上创建背景片段,用于加载查询

它不工作,我在屏幕上看不到碎片

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(安卓.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) 个答案

  1. # 1 楼答案

    您尚未提交您的碎片事务。像这样改变你的方法

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

    你忘了做fragmentcommit();

    例如:

    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();
        }
    });
    

    您也可以使用Fluent Interface Pattern来执行以下操作:

    activity.getFragmentManager()
        .beginTransaction()
        .add(android.R.id.content, new FragmentLoad())
        .commit();
    

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

    希望这有帮助