我有以下活动:
@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所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)