java– 尝试findViewById时抛出Nullpointerexception

java– 尝试findViewById时抛出Nullpointerexception,第1张

概述我有以下活动:publicclassMainActivityextendsActionBarActivity{@OverrideprotectedvoidonCreate(BundlesavedInstanceState){super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);if(savedInstanceState==null){

我有以下活动:

@H_301_5@public class MainActivity extends ActionBaractivity {@OverrIDeprotected 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在一个单独的片段中,我有:

@H_301_5@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);    }}

但是,我不确定如何解决这个问题,以便找到loginbutton ID.我以前没有使用过片段,所以我意识到我可能正在使用它们/错误地实现它们. fragment_main包含linearLayout中的几个按钮,而activity_main只包含一个FrameLayout.

解决方法:

编写代码来从片段初始化按钮,因为你的按钮是片段布局而不是活动的布局.

@H_301_5@@OverrIDepublic VIEw onCreateVIEw(LayoutInflater inflater, VIEwGroup container,        Bundle savedInstanceState) {    VIEw rootVIEw = inflater.inflate(R.layout.fragment_main, container,            false);    button login = (button) rootVIEw.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);        }    });    return rootVIEw;}

并从onCreate of Activity中删除登录按钮相关代码.

总结

以上是内存溢出为你收集整理的java – 尝试findViewById时抛出Nullpointerexception全部内容,希望文章能够帮你解决java – 尝试findViewById时抛出Nullpointerexception所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/web/1101625.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-28
下一篇 2022-05-28

发表评论

登录后才能评论

评论列表(0条)

保存