java - 尝试 findViewById 时抛出 NullpointerException

标签 java android nullpointerexception android-framelayout

我有以下 Activity :

public class MainActivity extends ActionBarActivity {

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

    if (savedInstanceState == null) {
        getSupportFragmentManager().beginTransaction()
                .add(R.id.container, new StartFragment())
                .commit();
    }

    Button login = (Button) findViewById(R.id.loginButton);

    login.setOnClickListener(new View.OnClickListener() {

        @Override
        public void onClick(View arg0) {

            Intent intent = new Intent(MainActivity.this,LoginActivity.class);
            startActivity(intent);
        }
    });

}

当我尝试为 R.id.loginButton 调用 findViewByID 时,我收到 NPE,我猜这是因为 loginButton位于一个单独的 fragment 中,我的 fragment 如下:

public static class StartFragment extends Fragment {

    public StartFragment() {
    }
    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {

        return inflater.inflate(R.layout.fragment_main, container, false);

    }
}

但是,我不确定如何解决此问题以便找到登录按钮 ID。我以前没有使用过 fragment ,所以我意识到我可能错误地使用它们/实现它们。 fragment_mainLinearLayout 中包含一些按钮,而 activity_main 只有一个 FrameLayout

最佳答案

尝试在Fragment中实现您的onCreateView(...),例如

@Override
 public View onCreateView(LayoutInflater inflater, ViewGroup container,
 Bundle savedInstanceState) {
 View rootView = inflater.inflate(R.layout.fragment_main, container,
  false);

 View something = rootView.findViewById(R.id.something);
 something.setOnClickListener(new View.OnClickListener() { ... });

return rootView;
}

Button 位于 fragment 布局 (fragment_main.xml) 中,而不位于 Activity 布局 (activity_main.xml) 中。 onCreate() 处于生命周期的早期,无法在 Activity View 层次结构中找到它,并且返回 null。在 null 上调用方法会导致 NPE。

关于java - 尝试 findViewById 时抛出 NullpointerException,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23869019/

相关文章:

java - 使用 Lucene 建立索引时如何将 JSON 对象视为单独的文档

java - 从 Java 调用多态 Scala 方法

android - 在android中将网格布局列设置为宽度的一半

android - 为什么在尝试在 ScrollView 中单击按钮时设置 EditText 时会出现 Nullpointer 异常?

java - BlackBerry 中的网络服务

Java 检查 String 中的 int 范围

android - Android 蓝牙 LE 通知的问题

Android 后台服务类 "onStartCommand"方法在设备启动时不执行其中的所有代码

java - java中断言后出现NullPointerException

访问 Imageview[] 数组时出现 java.lang.NullPointerException - Javafx