3

我正在从一个片段发布数据并通过向其添加视图来更新另一个片段。我没有使用列表视图。我正在使用线性布局。

我有一个非常简单的疑问。如何获取视图并通过向其添加另一个视图来更新它?

基本上我想膨胀已经有数据的线性布局,并在添加片段的主要活动中添加一个视图。

编辑:

LinearLayout ll = (LinearLayout)fragment.getView().findViewById(R.id.commentFragmentLayout);
            ViewGroup view = (ViewGroup) ll.getParent();
            View customView = view;



            TextView   commentContext  = (TextView) customView.findViewById(R.id.commentText);

            commentContext.setText("hello");


            view.addView(customView);

我试图在主要活动中这样做,但我的观点给出了空指针异常。

编辑2:

   FragmentManager fm       = getSupportFragmentManager();
                // You can find Fragments just like you would with a View by using FragmentManager.
                android.support.v4.app.Fragment fragment = fm.findFragmentById(R.id.fragmentCommentContent); 
                LayoutInflater inflater = (LayoutInflater)   getApplicationContext().getSystemService(getApplicationContext().LAYOUT_INFLATER_SERVICE);
                View child = inflater.inflate(R.layout.comments_list_item, null);


            LinearLayout ll = (LinearLayout)fragment.getView().findViewById(R.id.commentFragmentLayout);
            TextView    newText  = (TextView) child.findViewById(R.id.commentText);
            newText.setText("Important text");
            ll.addView(newText);

我试过了,得到:指定的孩子已经有了父母。首先在孩子的父母上调用 removeView()。问题是,如果我调用删除视图,我会丢失之前在布局中插入的数据。

4

3 回答 3

1

您发布的代码没有任何意义。您从片段中获取LinearLayout具有 id的父级R.id.commentFragment,在该父级中搜索 aTextView以设置一些文本,然后将父级添加到自身。

我有一个非常简单的疑问。如何获取视图并通过向其添加另一个视图来更新它?

你得到View一个片段的getView()。您在返回的视图上搜索所需的组件getView(),然后将所需的视图添加到该容器:

LinearLayout ll = (LinearLayout)fragment.getView().findViewById(R.id.commentFragmentLayout);
TextView newText = new TextView(context);
newText.setText("Important text");
ll.addView(newText);

基本上我想膨胀已经有数据的线性布局,并在添加片段的主要活动中添加一个视图。

您膨胀布局文件而不是已经存在的视图。我真的不明白你想要在这里尝试更好地解释。

于 2012-08-30T11:01:30.543 回答
0
 LayoutParams params =new LinearLayout.LayoutParams(LayoutParams.FILL_PARENT,LayoutParams.WRAP_CONTENT);
        LinearLayout layout = new LinearLayout(this);
        layout.setOrientation(LinearLayout.VERTICAL);
于 2012-08-30T12:33:20.497 回答
0
 lay=(LinearLayout)rootView.findViewById(R.id.Lay);
 lay.addView(yourView);
于 2014-08-10T15:58:31.923 回答