Java 从活动中的片段获取视图
我试图从动态添加到活动的片段中获取视图 MainActivity.javaJava 从活动中的片段获取视图,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
@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列表中的复选标记。我想制作一个可见/不可见元素的过滤器。