Java 从活动中的片段获取视图

Java 从活动中的片段获取视图,java,android,android-fragments,getview,Java,Android,Android Fragments,Getview,我试图从动态添加到活动的片段中获取视图 MainActivity.java @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); ... if (savedInstanceState == null) { // on fir

我试图从动态添加到活动的片段中获取视图

MainActivity.java

   @Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

    ...

    if (savedInstanceState == null) {
        // on first time display view for first nav item
        displayView(0);

    }

    myDrawerList.setOnItemClickListener(new DrawerItemClickListener());
    handleIntent(getIntent());

}

private class DrawerItemClickListener implements ListView.OnItemClickListener {
    @Override
    public void onItemClick(
        AdapterView<?> parent, View view, int position, long id
    ) {
        // display view for selected nav drawer item
        displayView(position);
    }               
}

private void displayView(int position) {
    // update the main content by replacing fragments
    Fragment fragment = null;
    String userToken = UserTokenStorageFactory.instance().getStorage().get();
    switch (position) {
    case 0:
        fragment = new AllCategories();
        break;
    case 1:
        fragment = new Subscription();
        break;
    case 2:
        if( userToken != null && !userToken.equals( "" ) ){
            Intent myIntent1 = new Intent(this, PrivateOffice.class);
            this.startActivity(myIntent1);
            break;
        }
        else {
            Intent myIntent1 = new Intent(this, LogIn.class);
            this.startActivity(myIntent1);
            break;
        }
    case 3:
        if( userToken != null && !userToken.equals( "" ) ){
            Intent myIntent1 = new Intent(this, Create_action.class);
            this.startActivity(myIntent1);
            break;
        }
        else {
            Intent myIntent1 = new Intent(this, LogIn.class);
            this.startActivity(myIntent1);
            break;
        }
    case 4:
        AlertDialog dialog = onCreateDialog(DIALOG_CHOOSE_CATEGORY);
        dialog.show();
        break;
    default:
        break;
    }

    if (fragment != null) {
        android.app.FragmentManager fragmentManager = getFragmentManager();
        fTrans = fragmentManager.beginTransaction();
        fTrans.replace(R.id.content_frame, fragment);
        fTrans.commit();

        // update selected item and title, then close the drawer
        myDrawerList.setItemChecked(position, true);
        myDrawerList.setSelection(position);
        setTitle(viewsNames[position]);
        myDrawerLayout.closeDrawer(mDrawer);
    } else {
        // error in creating fragment
        Log.e("MainActivity", "Error in creating fragment");
    }
}
@覆盖
创建时的公共void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
...
如果(savedInstanceState==null){
//第一个导航项目的首次显示视图
显示视图(0);
}
setOnItemClickListener(新的DroperItemClickListener());
handleIntent(getIntent());
}
私有类DrawerItemClickListener实现ListView.OnItemClickListener{
@凌驾
公共空间(
AdapterView父级、视图、整型位置、长id
) {
//所选导航抽屉项目的显示视图
显示视图(位置);
}               
}
私有void显示视图(内部位置){
//通过替换片段更新主要内容
片段=空;
字符串userToken=UserTokenStorageFactory.instance().getStorage().get();
开关(位置){
案例0:
fragment=新的所有类别();
打破
案例1:
fragment=新订阅();
打破
案例2:
if(userToken!=null&&!userToken.equals(“”){
Intent myIntent1=新Intent(这是PrivateOffice.class);
这是一种新的触觉(myIntent1);
打破
}
否则{
Intent myIntent1=新的Intent(这是LogIn.class);
这是一种新的触觉(myIntent1);
打破
}
案例3:
if(userToken!=null&&!userToken.equals(“”){
Intent myIntent1=新的Intent(这是Create_action.class);
这是一种新的触觉(myIntent1);
打破
}
否则{
Intent myIntent1=新的Intent(这是LogIn.class);
这是一种新的触觉(myIntent1);
打破
}
案例4:
AlertDialog=onCreateDialog(对话框选择类别);
dialog.show();
打破
违约:
打破
}
if(片段!=null){
android.app.FragmentManager FragmentManager=getFragmentManager();
fTrans=fragmentManager.beginTransaction();
fTrans.replace(R.id.content\u frame,fragment);
fTrans.commit();
//更新所选项目和标题,然后关闭抽屉
myDrawerList.setItemChecked(位置,true);
我的付款人名单(职位);
设置标题(视图名称[位置]);
myDrawerLayout.closeDrawer(mDrawer);
}否则{
//创建片段时出错
Log.e(“MainActivity”,“创建片段时出错”);
}
}

我需要从AllCategories.java的布局中获取视图(LinearLayout listv)。我尝试将getView()与findViewById一起使用,但它返回NullPointerException。我该怎么办?

为什么要更新活动片段的视图。您可以在片段本身中执行所需的操作。在AlertDialog中,我有一个具有多项选择的列表。我需要获取有关fragment AllCategories.java中元素可见性的信息,以交付或删除AlertDialog列表中的复选标记。我想制作一个可见/不可见元素的过滤器。