tph9
2021-03-27 02:18
采纳率: 50%
浏览 60

安卓开发小白,学习实现简单登录注册功能的时候遇到了个问题

用的是as3.5.2版本默认的Navigation drawer activity,想在滑动菜单的顶部添加一个跳转到登录界面的button控件,但是调试时点击按钮程序会闪退

获取button的代码

public class MainActivity extends AppCompatActivity {

    private AppBarConfiguration mAppBarConfiguration;


    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        Toolbar toolbar = findViewById(R.id.toolbar);
        setSupportActionBar(toolbar);
        DrawerLayout drawer = findViewById(R.id.drawer_layout);
        NavigationView navigationView = findViewById(R.id.nav_view);
        mAppBarConfiguration = new AppBarConfiguration.Builder(
                R.id.nav_quit, R.id.nav_borrowed, R.id.nav_collect,
                R.id.nav_admin, R.id.nav_home)
                .setDrawerLayout(drawer)
                .build();
        NavController navController = Navigation.findNavController(this, R.id.nav_host_fragment);
        NavigationUI.setupActionBarWithNavController(this, navController, mAppBarConfiguration);
        NavigationUI.setupWithNavController(navigationView, navController);
        //初始化数据库
        Dbhelper helper = new Dbhelper(MainActivity.this);
        SQLiteDatabase db = helper.getWritableDatabase();
        //跳转登录
        View headerView = navigationView.getHeaderView(0);
        Button log=headerView.findViewById(R.id.loginbutton);
        log.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                        Intent intent = new Intent();
                        intent.setClass(MainActivity.this, logandregActivity.class);
                        startActivity(intent);
                        finish();
                }
            });

button的属性

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    android:layout_width="match_parent"
    android:layout_height="@dimen/nav_header_height"
    android:background="@drawable/side_nav_bar"
    android:gravity="bottom"
    android:orientation="vertical"
    android:paddingLeft="@dimen/activity_horizontal_margin"
    android:paddingTop="@dimen/activity_vertical_margin"
    android:paddingRight="@dimen/activity_horizontal_margin"
    android:paddingBottom="@dimen/activity_vertical_margin"
    android:theme="@style/ThemeOverlay.AppCompat.Dark">

    <Button
        android:id="@+id/loginbutton"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="点击登录"
        />

    <TextView
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:paddingTop="@dimen/nav_header_vertical_spacing"
        android:text="@string/nav_header_title"
        android:textAppearance="@style/TextAppearance.AppCompat.Body1" />

    <TextView
        android:id="@+id/textView"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="@string/nav_header_subtitle" />


</LinearLayout>

跳转的页面

public class logandregActivity extends Activity {
    Button loginbutton=(Button)findViewById(R.id.log_log);
    Button regbutton=(Button)findViewById(R.id.log_reg);
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_login);
        regbutton.setOnClickListener(new View.OnClickListener() {
            public void onClick(View v) {
                Intent intent = new Intent();
                intent.setClass(logandregActivity.this, regActivity.class);
                startActivity(intent);
            }
        });

    }
}

不知道是哪里出错了,希望大佬们能解答小弟的疑惑!

  • 写回答
  • 好问题 提建议
  • 关注问题
  • 收藏
  • 邀请回答

3条回答 默认 最新

  • qq_1113502097 2021-03-31 10:16
    已采纳

    调转的界面问题,你的

    Button loginbutton=(Button)findViewById(R.id.log_log);

    Button regbutton=(Button)findViewById(R.id.log_reg);

    初始化位置怎么在类里面去了,根据程序运行,创建类->创建类属性->依次调用生命周期。也就是你在初始化在生命周期之前,布局都没有加载进来,你怎么能调用findViewById(R.id.log_log);

    已采纳该答案
    评论
    解决 无用
    打赏 举报
  • 幻灰龙 2021-03-27 08:03

    捕获下异常,打印下日志。

    评论
    解决 无用
    打赏 举报
  • 有问必答小助手 2021-03-27 15:24

    您好,我是问答小助手,你的问题已经有小伙伴为您解答了问题,您看下是否解决了您的问题,可以追评进行沟通哦~

    如果有您比较满意的答案 / 帮您提供解决思路的答案,可以点击【采纳】按钮,给回答的小伙伴一些鼓励哦~~

    ps:问答VIP仅需29元,即可享受5次/月 有问必答服务,了解详情>>> https://vip.csdn.net/askvip?utm_source=1146287632

    评论
    解决 无用
    打赏 举报

相关推荐 更多相似问题