安卓各组件

Intent显式实现页面跳转(并携带数据)

 Button login_but = findViewById(R.id.login_button);
 login_but.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                Intent  intent = new Intent(MainActivity.this,login_activity.class);
                 //intent.putExtra("name","zoo");  //键值对形式传递数据
                startActivity(intent);
            }
        });
 // ------------------增加数据传递---------------------------
  //在第二个活动接受intent实例
 	   // Intent Intent = getIntent();
       // String data = intent.getStringExtra("name");
       // Toast.makeText(RegisterActivity.this,data,Toast.LENGTH_LONG).show();

Intent返回数据给上一个活动

//一、换成startActivityForResult启动活动
register_but.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                Intent  intent = new Intent(MainActivity.this,register_activity.class);
               startActivityForResult(intent,1); //通过starActivityForResult来启动下一个活动,并给其一个标记 (这里标记为1)因为要判断是哪个活动销毁后返回给的数据
            }
        });

  //二、在下层活动中新建Intnet携带数据返回,并销毁
   @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_register);
        Button button2 =  (Button) findViewById(R.id.button2);
        button2.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                Intent intent = new Intent();
                intent.putExtra("name","handsome");//返回数据
                setResult(RESULT_OK,intent); //请求码
                finish();//销毁活动
            }
        });
    }
    
//活动销毁会回调onActivityResult,需要重写
   @Override
    protected void onActivityResult(int requestCode, int resultCode, @Nullable Intent data) {
        super.onActivityResult(requestCode, resultCode, data);
        switch (requestCode){
            case 1:
                if(resultCode==RESULT_OK){
                    String resdata = data.getStringExtra("name");
                    Toast.makeText(MainActivity.this,resdata,Toast.LENGTH_LONG).show();
                }
        }
    }


Iintent隐式用法

//mainfest.xml
<activity
            android:name=".ConnectActivity"
            android:exported="true" >
            <intent-filter>
                <action android:name="com.example.qq.ACTION_START"/>
                <category android:name="android.intent.category.DEFAULT" />
                <category android:name="com.example.qq.my_category"/>
                //指定响应的目录为my_category
            </intent-filter>
        </activity>
  //在活动中
      Button but2 = (Button) findViewById(R.id.button2);
        but2.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                Intent intent = new Intent("com.example.qq.ACTION_START");
                intent.addCategory("com.example.qq.my_category");//给intent增加目录
                startActivity(intent);
            }
        });

Toast弹出提示消息

Button but1 = findViewById(R.id.but1);
 but1.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                Toast.makeText(FirstActivity.this,"you have clicked but1",Toast.LENGTH_SHORT).show()
            }
        });

选择菜单项OptionMenu
长按菜单项ContextMenu
子菜单项SubMenu

参考连接三种菜单项实现方式

//在res文件下新建一个文件夹menu(不能搞错位置,否则右键找不到menu resourece file) 新建menu resourece file 并写入如下内容
/*<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:android="http://schemas.android.com/apk/res/android">
<item android:id="@+id/item1"
      android:title="设置" />
<item android:id="@+id/item2"
      android:title="退出" />
</menu>*/
//重写onCreateOptionMenu 
  @Override
    public boolean onCreateOptionsMenu(Menu menu) {
//        return super.onCreateOptionsMenu(menu);
        getMenuInflater().inflate(R.menu.optionmenu,menu);
        return true;
    }

Broadcast全局广播—动态注册

<!--在mainfest.xml配置网络权限-->
 <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>
intentFilter = new IntentFilter();
        intentFilter.addAction("android.net.conn.CONNECTIVITY_CHANGE");//监听网络变化
        networkChangeReceiver = new NetworkChangeReceiver();//自定义一个处理网络变化的newworkchange的类 并实例化
        registerReceiver(networkChangeReceiver,intentFilter);//注册广播接收器
//动态注册广播需要取消注册,重写ondestory
 @Override
    protected void onDestroy() {
        super.onDestroy();
        unregisterReceiver(networkChangeReceiver);//取消注册
    }

SharedPreferences存储

save_button.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                SharedPreferences.Editor editor = getSharedPreferences("data",MODE_PRIVATE).edit();//创建实例
                editor.putString("name","zpp");
                editor.putInt("age",12);
                editor.apply();//应用
            }
        });

SharedPreferences读取数据

 read_button.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                SharedPreferences pref = getSharedPreferences("data",MODE_PRIVATE);
                String name = pref.getString("name","");//m没有值默认为空
                int age = pref.getInt("age",0);  //没有值默认为0
                Log.d("ConnectActivity",name);

            }
        });

LitePal建立数据库

  1. 添加依赖 implementation 'org.litepal.guolindev:core:3.2.3’
  2. 配置mainfest.xml android:name="org.litepal.LitePalApplication"
  3. 在 app->src->main 新建一个assets文件夹,并新建一个litepal.xml文件
  4. 在com.examle.appming 下新建一个对象
    点击跳转litepal国内镜像链接
package com.example.qq;

public class book {
    private int id;
    private String name;
    private float price;

    public int getId() {
        return id;
    }

    public void setId(int id) {
        this.id = id;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public float getPrice() {
        return price;
    }

    public void setPrice(float price) {
        this.price = price;
    }
}
  1. 在litepal.xml下构建对象关系,这样就可以用对象的思想操作数据库
    数据库名 bookstore
    版本号 1 数据库发生变化 则版本号加一
    表 book
    这里为对象关系构建 下面代码显示的book就是在com.example.qq下的一个book对象
<?xml version="1.0" encoding="utf-8"?>
<litepal>
    <dbname value="bookstore" />
    <version value="1" />
    <list>
        <mapping class ="com.example.qq.book"/>
    </list>



</litepal>

LitePal添加数据

如若进行PitePal的增删改查需要使BOOK对象继承LitePal
public class BOOK extends LitePalSupport{······}

 upgrade_button.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                BOOK book = new BOOK();
                book.setId(1);
                book.setPrice(12212);
                book.setName("朱氏宝典");
                book.setPress("人民出版社");
                book.save();//save方法就是来自LitePalSupport

            }
        });
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值