Android(JetPack)学习(9) 计算小测验

本文介绍了使用Android JetPack组件开发一个口算测试APP的经验,包括数据绑定、隐藏ActionBar、数字块的辅助线绘制、字符串资源管理和随机数生成等技巧。在开发过程中,注意数据Binding类的model或view的包名不宜大写,以避免编译错误。
摘要由CSDN通过智能技术生成

P20 阶段综合:口算测试APP

  1. 部分细节是自己改写了。

  2. 记住:dataBinding生成的Binding类时,会引用到自定义的model或者view。切记包名不可以大写,否则会报错:错误: 程序包Model不存在!!!!!!来源

  3. if (getSupportActionBar() != null){
    getSupportActionBar().hide();
    }
    用来隐藏一个Activity的ActionBar合适。

  4. 数字块可以画辅助线(%)

  5. 字符串资源要放起来,好翻译和管理。

  6. 不带参数的nextInt()会生成所有有效的整数(包含正数,负数,0)
    带参的nextInt(int x)则会生成一个范围在0~x(不包含X)内的任意正整数
    例如:int x=new Random.nextInt(100);
    则x为一个0~99的任意整数

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
BasicAC.java

package com.test.kousuanDemo;

import android.content.DialogInterface;
import android.os.Bundle;

import androidx.appcompat.app.AlertDialog;
import androidx.appcompat.app.AppCompatActivity;
import androidx.navigation.NavController;
import androidx.navigation.Navigation;
import androidx.navigation.ui.NavigationUI;

import com.test.R;

public class BasicAC extends AppCompatActivity {
   

    NavController controller;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
   
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_basic_ac);
//        if (getSupportActionBar() != null){
   
//            getSupportActionBar().hide();
//        }

        controller= Navigation.findNavController(this,R.id.fragment5);
        NavigationUI.setupActionBarWithNavController(this,controller);

    }

    @Override
    public boolean onSupportNavigateUp() {
   
        if (controller.getCurrentDestination().getId()==R.id.questionFragment){
   
            AlertDialog.Builder builder=new AlertDialog.Builder(this);
            builder.setTitle("注意!");
            builder.setPositiveButton("退出", new DialogInterface.OnClickListener() {
   
                @Override
                public void onClick(DialogInterface dialog, int which) {
   
                    controller.navigateUp();
                }
            });
            builder.setNegativeButton("算了", new DialogInterface.OnClickListener() {
   
                @Override
                public void onClick(DialogInterface dialog, int which) {
   

                }
            });
            AlertDialog alertDialog=builder.create();
            alertDialog.show();
        }else {
   
            controller.navigate(R.id.titleFragment);
        }
        return super.onSupportNavigateUp();
        //@return true if Up navigation completed successfully and this Activity was finished,
//     *         false otherwise.
    }

    @Override
    public void onBackPressed() {
   
//        if(外面还有页面){可以退}
        onSupportNavigateUp();
    }
}

Title.java

package com.test.kousuanDemo;


import android.os.Bundle;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;

import androidx.databinding.DataBindingUtil;
import androidx.fragment.app.Fragment;
import androidx.lifecycle.SavedStateViewModelFactory;
import androidx.lifecycle.ViewModelProviders;
import androidx.navigation.NavController;
import androidx.navigation.Navigation;

import com.test.R;
import com.test.databinding.FragmentTitleBinding;

public class TitleFragment extends Fragment {
   

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

        FragmentTitleBinding binding;
        VM vm= ViewModelProviders.of(getActivity(),new SavedStateViewModelFactory(getActivity().getApplication()
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值