Java Android导航抽屉碎片
我正在开发一个实现NavigationDrawer的Android应用程序 NavigationDrawer工作正常,片段转换也可以,但我无法访问片段的元素 这是我的McClick listener代码:Java Android导航抽屉碎片,java,android,eclipse,android-fragments,navigation-drawer,Java,Android,Eclipse,Android Fragments,Navigation Drawer,我正在开发一个实现NavigationDrawer的Android应用程序 NavigationDrawer工作正常,片段转换也可以,但我无法访问片段的元素 这是我的McClick listener代码: ConfigureFragment configure = new ConfigureFragment(); Button bt; InFragment in = new InFragment(); OutFragment out = new OutFragment(); Conditioni
ConfigureFragment configure = new ConfigureFragment();
Button bt;
InFragment in = new InFragment();
OutFragment out = new OutFragment();
ConditioningFragment cond = new ConditioningFragment();
private String lft = null;
@Override
public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
selectItem(position);
android.app.FragmentManager fragmentManager = getFragmentManager();
FragmentTransaction transaction = fragmentManager.beginTransaction();
switch(position){
case 0:
if(lft == null){
transaction.replace(R.id.mainContent,configure,"ConfigureFragment");
transaction.commit();
lft = "ConfigureFragment";
}else{
transaction.replace(fragmentManager.findFragmentByTag(lft).getId(),configure,"ConfigureFragment");
transaction.commit();
lft = "ConfigureFragment";
}
bt = (Button)configure.getView().findViewById(R.id.configure_bt); //throws NullPointerException
break;
case 1:
if(lft == null){
transaction.replace(R.id.mainContent,in,"InFragment");
transaction.commit();
lft = "InFragment";
}else{
transaction.replace(fragmentManager.findFragmentByTag(lft).getId(),in,"InFragment");
transaction.commit();
lft = "InFragment";
}
break;
case 2:
if(lft == null){
transaction.replace(R.id.mainContent,out,"OutFragment");
transaction.commit();
lft = "OutFragment";
}else{
transaction.replace(fragmentManager.findFragmentByTag(lft).getId(),out,"OutFragment");
transaction.commit();
lft = "OutFragment";
}
break;
}
drawerLayout.closeDrawer(Gravity.LEFT);
}
字符串变量不能与像,==这样的运算符一起使用。您需要使用:
stringVariableOne.equals(stringVariableTwo);
为了检查一个字符串变量StringVariableOne的值在本例中是否等于另一个字符串变量或nullstringVariableTwo
例如:
lft.equals(null);
什么如果字符串为null,则对象为null;如果对象为null,则如何调用对象方法?他的比较lft==null或lft!=null是正确的方法。这是一个误解。将对象的值设置为null时,对象本身不会变为null。在这种情况下,如果String对象的值设置为null,则不会使String对象为null。它只是将String对象的值设置为null。我很清楚这一点,因为由于所有这些误解,我遭受了很多痛苦-好吧,我知道,但这不是我的问题。当我使用fragment.getView.findviewbydr.id.thefragmentitem时,我得到一个NullPointerException。为什么?但是。。。我在你的问题中找不到那句话。你能发布整个代码吗?@Lorenzo我相信你得到了一个NullPointerException,因为在else块中,你在一个原始片段上使用了getId方法,如果它有一个分配给自己的Id,它将不会返回它的容器视图的Id。因此,基本上,您将片段的id传递给方法replaceint containerWebID、fragment fragment、String标记,而您应该提供容器视图的id。获取容器视图id的正确方法是ViewGroup fragment.getView.getParent.getId;。希望这有帮助。