Java Android导航抽屉碎片

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

我正在开发一个实现NavigationDrawer的Android应用程序

NavigationDrawer工作正常,片段转换也可以,但我无法访问片段的元素

这是我的McClick listener代码:

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;。希望这有帮助。