Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/204.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 将视图传递到页面片段_Android_Android Fragments - Fatal编程技术网

Android 将视图传递到页面片段

Android 将视图传递到页面片段,android,android-fragments,Android,Android Fragments,我能够通过Bundle/Instance将字符串值传递给PageFragment。但是我怎样才能通过一个视图呢 我试图在PageFragment中创建一个公共LinearLayout,然后使用PageFragment.LinearLayout.addView(myview)在FragmentPagerAdapter中。但它不起作用 public class PageFragment extends Fragment { public static LinearLayout linea

我能够通过Bundle/Instance将字符串值传递给PageFragment。但是我怎样才能通过一个视图呢

我试图在PageFragment中创建一个公共LinearLayout,然后使用
PageFragment.LinearLayout.addView(myview)在FragmentPagerAdapter中。但它不起作用

public class PageFragment extends Fragment {  
    public static LinearLayout linearlayout; 

     public static PageFragment newInstance(String title) {

         PageFragment pageFragment = new PageFragment();
         Bundle bundle = new Bundle();
         bundle.putString("title", title);
         pageFragment.setArguments(bundle);
         return pageFragment;
     }



     @Override  
     public void onCreate(Bundle savedInstanceState) {  
         super.onCreate(savedInstanceState);  
     }  

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

         View view = inflater.inflate(R.layout.page_quiz, container, false);  
         tv = (TextView) view.findViewById(R.id.questionText);  
         tv.setText(getArguments().getString("title"));         
         linearlayout= (LinearLayout) view.findViewById(R.id.questionList);

         return view;  
     }
}
碎片页雷达:

private static class MyFragmentPagerAdapter extends FragmentPagerAdapter { 
...
@Override  
        public Fragment getItem(int index) { 
    PageFragment.linearlayout.addView(myview); //=> doesnt work
        String mytext = "My Text";          
             return PageFragment.newInstance(index + mytext);
        }  

你所尝试的不是做你想做的事的正确方法。首先,在适配器的
getItem()
方法中,
片段的视图尚未构建,因此
线性布局将为空。如果需要在该级别将视图添加到片段的视图中,则应直接将其添加到
片段的
onCreateView()
回调中(仅向片段传递填充该视图所需的数据)。否则,创建一个方法来访问父级
LinearLayout
,并在片段完全构建后添加视图。请记住,您需要处理添加的视图,以便再次显示它,因为这些片段可能会被适配器销毁

另一种方法是从一开始就在片段的布局中拥有额外的视图(可见性
消失了
),并且只在需要时切换其可见性


不要在类中使视图(如
LinearLayout
)处于静态状态,因为这样可能会造成内存泄漏。

感谢您的回复,这确实很有帮助。我将尝试创建方法并在片段完全构建后添加视图。但在哪些类/方法片段中完全构建?它尚未在
getItem
中构建;因此,我可以在哪里添加
视图
?@metemet06您可以通过
onCreate
onResume
方法发布
Runnable
来完成此操作。但是,再一次,如果您计划将视图添加到适配器的每个片段,并且在开始时考虑在片段本身中执行此操作,那么,是的,我将向适配器的每个片段添加视图。抱歉,也许这是一个简单的问题,但是
Runnable
是否会在PageFragment的onCreate中,如果可能的话;你能给我一个如何使用的示例:
myview.post(new Runnable(){public void run(){…})
Thank我想我做到了,但正如你所说的:片段可能会被适配器破坏。碎片被销毁。我只想得到viewpager片段的位置;然后从数据库中获取该职位的内容,并在fragmnet中将其设置为textview/linearlayout。因此,每次页面更改时,内容都会更改。@metemet06使用适配器意味着默认情况下,您最多可以获得3个片段的引用(当前片段,如果可能的话,每侧一个片段)。我指的是类似这样的
view.post(new Runnable(){@Override public void run(){Fragment f=getFragmentManager().findffragmentbytag(“android:switcher:+r.id.theidof theviewpager+”:“+viewPager.getCurentItem())/…update})。当用户向左/向右滑动时,需要根据需要更新其他片段。