Android开发技能小结

本文介绍了如何在Android应用中通过Intent进行页面跳转,创建和访问SQLite数据库,展示数据库内容,修改Toast提示,并实现多线程执行特定任务。实例涵盖了数据库操作、UI交互及并发处理的关键技术。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

目录

1.Intent显示跳转

2.访问sqlite

3.显示数据库内容

4.toast修改

5.多线程执行指定任务


1.Intent显示跳转

(1)在manifest.xml中注册活动并为活动命名,在要进行跳转的地方写intent

MainActivity.java
    Intent intent = new Intent(MainActivity.this,ListActivity.class);
    startActivity(intent);

AndroidManifest.xml
    <application
        android:allowBackup="true"
        android:icon="@mipmap/ic_launcher"
        android:label="@string/app_name"
        android:roundIcon="@mipmap/ic_launcher_round"
        android:supportsRtl="true"
        android:theme="@style/AppTheme">
        <activity android:name=".ListActivity"/> // 目标活动
        <activity android:name=".MainActivity">
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />

                <category android:name="android.intent.category.LAUNCHER" /> // 原活动
            </intent-filter>
        </activity>
    </application>

(2)发送方利用intent传递参数,借助bundle来封装数据

Intent intent = new Intent();
intent.setClass(Login.this, MainActivity.class);
Bundle bundle = new Bundle();
bundle.putSerializable("user", user); //不同的数据有对应的put方法
intent.putExtras(bundle); //将bundle封装在intent内
this.startActivity(intent);

接收方利用intent获取bundle

Bundle bundle = getIntent().getExtra();

2.访问sqlite

(1)创建数据库访问类

package com.example.studentinfotry;

import android.content.Context;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteOpenHelper;
import android.widget.Toast;

import androidx.annotation.Nullable;

public class MyDBOpenHelper extends SQLiteOpenHelper {

    private static final String DBNAME = "student.db"; //数据库名
    private static final int VERSION = 1;

    public MyDBOpenHelper(@Nullable Context context) {
        super(context, DBNAME, null, VERSION);
    }

    @Override
    public void onCreate(SQLiteDatabase db) { //创建表
        db.execSQL("create table stu_info(id integer primary key autoincrement," +
                "sno varchar(10)," +
                "name varchar(10))");
    }
    @Override
    public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
    }
}

(2)活动里声明并使用数据库

package com.example.studentinfotry;

import androidx.appcompat.app.AppCompatActivity;

import android.content.ContentValues;
import android.content.Intent;
import android.database.sqlite.SQLiteDatabase;
import android.os.Bundle;
import android.view.View;


public class MainActivity extends AppCompatActivity {
    private MyDBOpenHelper mhelper ;
    private SQLiteDatabase db ; // 利用SQLiteDatabase句柄操作数据库
    @Override
    protected void onCreate ( Bundle savedInstanceState ) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        initView();
        btnAdd();
    }
    private void initView() { // 初始化数据库
        btn_oneadd = findViewById(R.id.create_database);
        mhelper = new MyDBOpenHelper(MainActivity.this);
        db = mhelper.getWritableDatabase(); //写数据库
    }
    private void btnAdd(){ // 点击事件插入数据
        btn_oneadd.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                ContentValues values = new ContentValues();
                values.put("sno",edit_onesno.getText().toString());
                values.put("name",edit_onename.getText().toString());
                db.insert("stu_info",null,values);
                Toast.makeText(MainActivity.this,"添加成功",Toast.LENGTH_SHORT).show();
            }
        });
    }
}

3.显示数据库内容

package com.example.studentinfotry;

import androidx.appcompat.app.AppCompatActivity;
import android.annotation.SuppressLint;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;
import android.os.Bundle;
import android.widget.ArrayAdapter;
import android.widget.ListView;
import java.util.ArrayList;
import java.util.List;

public class ListActivity<ListViewlistview> extends AppCompatActivity {

    ArrayAdapter<String>adapter; //适配器
    List<String>Studentlist=new ArrayList<>(); //学生数组列表
    private MyDBOpenHelper mhelper ; // 数据库访问对象
    private SQLiteDatabase db ; // 数据库使用句柄
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.listview);
        ListView listview=findViewById(R.id.lv); // 绑定xml界面
        adapter=new ArrayAdapter<String>(this,android.R.layout.simple_list_item_1,Studentlist); // 配置适配器
        listview.setAdapter(adapter); // 界面按照适配器的方式显示数据,适配器以一定格式显示数组列表内的数据
        mhelper = new MyDBOpenHelper(ListActivity.this);
        db = mhelper.getReadableDatabase(); // 以读的方式访问数据库
        Cursor cursor=db.query("stu_info",null,
                null,null,
                null,null,null); //数据库访问游标
        if(cursor.moveToFirst()){ //当数据库内有数据时执行以下内容
            do {
                @SuppressLint("Range")String id = cursor.getString(cursor.getColumnIndex("id"));
                @SuppressLint("Range")String sno = cursor.getString(cursor.getColumnIndex("sno"));
                @SuppressLint("Range")String name = cursor.getString(cursor.getColumnIndex("name"));
                Studentlist.add("序号:" + id + "  学号:" + sno + "  姓名:" + name); //向数组中插入字符串,代表一项
            }while (cursor.moveToNext()); //移动游标到下一个位置,直到游标指向NULL结束
        }
        adapter.notifyDataSetChanged(); //使用notifidatasetchanged来刷新ListView
        cursor.close();
    }
}

4.toast修改

Toast toast;
//初始化toast显示内容
toast = Toast.makeText(getApplicationContext(),
                        "Hello world!", Toast.LENGTH_LONG);
//设置toast显示位置
toast.setGravity(Gravity.CENTER, 1666, -1000);
//设置toast显示样式
LinearLayout toastView = (LinearLayout) toast.getView();
//插入要显示的图片
ImageView imageCodeProject = new ImageView(getApplicationContext());
imageCodeProject.setImageResource(R.drawable.icon);
toastView.addView(imageCodeProject, 0);
//显示
toast.show();

5.多线程执行指定任务

(1)创建Handler

Android 应用程序创建的时候,系统会给每一个进程提供一个LooperLooper 是一个死循环,它内部维护一个消息队列,Looper不停的从消息队列中取Message,取到的消息就发送给handler,最后Handler 根据接收的消息去修改UI等。

//创建Handler消息处理机制
handler = new Handler(){
    @Override
    public void handleMessage(@NonNull Message msg){
        //需要处理的信息
        int index;
        if(msg.what==0x101){ //当消息的标识为 0x101时执行对应逻辑
            //要处理的流程
        }
        super.handleMessage(msg);
    }
};

(2)创建线程,线程内的handler是主线程内声明并初始化的handler

//创建线程
Thread t = new Thread(new Runnable() {
    @Override
    public void run() {
        int index=0;
        while(!Thread.currentThread().isInterrupted()){
            index = new Random().nextInt(position.length);
            Message m = handler.obtainMessage();
            m.what=0x101; //设置消息标志
            m.arg1=index; //保存地鼠位置的索引值
            handler.sendMessage(m); //发送消息通知Handler处理

            try{
                Thread.sleep(new Random().nextInt(500)+500);//设置休眠
            } catch (InterruptedException e) {
                e.printStackTrace();
            }

        }
    }
});
t.start();

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值