无法访问片段中的ExpandablelistView

问题描述:

MainActivity在启动时将一个片段布局添加到Relativeview,然后我发送一个数据片段将其添加到ExpandablelistView,但我的应用程序显示我无法识别ExpandablelistView的错误。无法访问片段中的ExpandablelistView

MainActivity:

public class MainActivity extends AppCompatActivity implements FragmentAddCatergory.onClickButtonListener { 
private FragmentManager manager; 
private FragmentTransaction transactionShowList; 
private FragmentTransaction transactionAddCatergory; 
private FragmentAddCatergory addCatergory; 
private FragmentShowCategory showCategory; 
private boolean addcategory; 
private TextView txtAddCategory; 

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_main); 
    manager = getFragmentManager(); 
    transactionShowList = manager.beginTransaction(); 
    showCategory = new FragmentShowCategory(); 
    addCatergory=new FragmentAddCatergory(); 
    transactionShowList.add(R.id.Fragment_container, showCategory); 
    transactionShowList.commit(); 
    addcategory=false; 
    txtAddCategory = (TextView) findViewById(R.id.txtaddcategory); 
    txtAddCategory.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View v) { 
      ChangeFragment(); 
     } 
    }); 
} 

public void ChangeFragment(){ 
    transactionAddCatergory=manager.beginTransaction(); 
    if (addcategory){ 
     transactionAddCatergory.replace(R.id.Fragment_container,addCatergory); 
     txtAddCategory.setText("Do you want to see your List?Show me!"); 
     addcategory=false; 
    }else{ 
     transactionAddCatergory.replace(R.id.Fragment_container,showCategory); 
     txtAddCategory.setText("Do you want to add a Category?Create One"); 
     addcategory=true; 
    } 
    transactionAddCatergory.commit(); 
} 

@Override 
public void ClickButton(String group, String child) { 
    FragmentShowCategory a=new FragmentShowCategory(); 
    a.showExpand(this,group,child); 
}} 

在最后上面的代码中我做的第一个片段对象和发送数据,并在下面的代码是第一个片段

public class FragmentShowCategory extends Fragment { 
private View view; 

@Nullable 
@Override 
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { 
    super.onCreateView(inflater, container, savedInstanceState); 
    view = inflater.inflate(R.layout.activity_expandable_list_view, container, false); 
    return view; 
} 

public void showExpand(Context context, String g, String c) { 
    Toast.makeText(context, g + " is " + c, Toast.LENGTH_LONG).show(); 
    HashMap<String, List<String>> carsDetails = DataProvider.getInfo(g, c); 
    List<String> carsBrands = new ArrayList<String>(carsDetails.keySet()); 
    ItemClass adapter = new ItemClass(context, carsDetails, carsBrands); 
    ExpandableListView list = (ExpandableListView) view.findViewById(R.id.expandList); 
    list.setAdapter(adapter); 
}} 

的代码,但是当我跑我的应用程序,我得到的错误,我不知道为什么排队:

ExpandableListView list =(ExpandableListView)view.findViewById(R.id.expandList);

我很乐意帮助我。

仅仅因为您创建了片段的实例,您的片段的视图层次结构不会自动膨胀,就像您在ClickButton中做的那样。必须先调用onCreateView()方法才能使视图膨胀,这是fragment's lifecycle的一部分。您应该让Android实例化您的片段,并通过FragmentManager获取它的实例。

This tutorial解释关于片段的基本知识。