0

我遇到的问题是我不知道如何在片段中获取指向布局的指针。很明显,要在 Java 中获取布局指针,您需要执行以下操作:

 LinearLayout llTemp = (LinearLayout) findViewById(R.id.llTemp)

类似的东西。

现在我正在做的是从主类中的服务器获取信息并在同一个类中加载一个片段。我想用从外部类加载的信息填充片段。有没有办法做到这一点?我会从片段中抓取布局并这样做,但我无法引用它,因为它在片段中。

我确定这是一个常见问题,但我找不到任何特别像这样的东西。

在此先感谢,干杯,杰克

回答评论:

 View view = inflater.inflate(R.layout.main_frag, container, false);
 mainLayout = (LinearLayout) view.findViewById(R.id.ll_MainFrag);
 return view;

这就是我的 onCreateView 中的内容。

好的,只是添加我如何实例化片段:

 private int MAIN = 1;
 FragmentManager fm = getSupportFragmentManager();
 fragments[MAIN] = new MainFragment();

 FragmentTransaction transaction = fm.beginTransaction();
 transaction.commit();

 getSupportFragmentManager().beginTransaction().add(R.id.flMain, fragments[MAIN]).commit();

从这里我希望能够执行以下操作:

 fragments[MAIN].createTextView();
4

1 回答 1

1

创建 Fragment 时,创建公共方法来设置数据:

public class MyFragment extends Fragment {
    private TextView text1;
    private TextView text2;

    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
        View layout = LayoutInflater.from(getActivity()).inflate(R.layout.simple_list_item_2,container,false);

        text1 = (TextView) layout.findViewById(R.id.text1);
        text2 = (TextView) layout.findViewById(R.id.text2);

        return super.onCreateView(inflater, container, savedInstanceState);
    }

    public void setData(String t1, String t2){
        text1.setText(t1);
        text2.setText(t2);
    }
}

在父活动中添加片段时,给它一个唯一的标签:

 MyFragment f = new MyFragment();
 getFragmentManager().beginTransaction().add(f,"my_fragment").commit();

稍后,您可以从父活动中搜索片段并在其上调用一些方法:

 MyFragment frg = (MyFragment) getFragmentManager().findFragmentByTag("my_fragment");
 if(frg != null){
    frg.setData("abc","def");
 }

此外,如果片段是从布局中添加的,您可以通过其id.

于 2013-08-03T02:09:43.727 回答