• Android(activity)


    一:Activity概述

    activity提供了和用户交互的可视化界面,activity中可以存放很多组件

    activity有四种状态:运行态、暂停态、停止态、销毁态。

    我们可以通过重写上面提供的方法来完成activity生命周期的操作,但是在一个程序中只能有一个主activity,其他的activity都必须依附于这个主的activity。

    当我们要创建activity的视图的时候我们需要通过Intent对象来实现他。

    1. Intent intent = new Intent(MainActivity.this, MyActivity.class);
    2. startActivity(intent);

    当我们销毁的时候我们需要在监听器中使用相应的方法。

    1.1 Activity的跳转

    intent可以跳转到另一个activity中

    finish()关闭当前的activity

    1.2 Activity的交换数据

    intent是信使,但是不具备保存数据的能力,我们需要用bundle将数据绑定到intent

    第一个activity

    1. Bundle bundle = new Bundle();
    2. bundle.putCharSequence("name",s1);
    3. intent.putExtras(bundle);
    4. startActivity(intent);

    第二个activity

    1. Intent intent1 = getIntent();
    2. Bundle extras = intent1.getExtras();
    3. extras.get("name");

    1.3 Activity中文字数据的传递

    注意转化

    1. String id = ((EditText) findViewById(R.id.id)).getText().toString();
    2. String name = ((EditText) findViewById(R.id.name)).getText().toString();
    3. String password = ((EditText)findViewById(R.id.password)).getText().toString();
    4. String stuId = ((EditText)findViewById(R.id.stuNo)).getText().toString();

    多个activity的转化 

    1. package com.example;
    2. import android.app.Activity;
    3. import android.content.Intent;
    4. import android.os.Bundle;
    5. import android.view.View;
    6. import android.widget.Button;
    7. import android.widget.TextView;
    8. import androidx.annotation.Nullable;
    9. import org.w3c.dom.Text;
    10. public class LoginActivity extends Activity {
    11. @Override
    12. protected void onCreate(@Nullable Bundle savedInstanceState) {
    13. super.onCreate(savedInstanceState);
    14. setContentView(R.layout.activity_login);
    15. Intent intent = getIntent();
    16. Bundle bundle = intent.getExtras();
    17. String id = bundle.getString("id");
    18. String name = bundle.getString("name");
    19. String stuId = bundle.getString("stuId");
    20. TextView t1 = findViewById(R.id.t1);
    21. TextView t2 = findViewById(R.id.t2);
    22. TextView t3 = findViewById(R.id.t3);
    23. t1.setText(id);
    24. t2.setText(name);
    25. t3.setText(stuId);
    26. }
    27. }
    1. package com.example;
    2. import android.content.Intent;
    3. import android.util.Log;
    4. import android.view.View;
    5. import android.widget.Button;
    6. import android.widget.EditText;
    7. import android.widget.Toast;
    8. import androidx.appcompat.app.AppCompatActivity;
    9. import android.os.Bundle;
    10. public class MainActivity extends AppCompatActivity {
    11. @Override
    12. protected void onCreate(Bundle savedInstanceState) {
    13. super.onCreate(savedInstanceState);
    14. setContentView(R.layout.activity_main);
    15. Button button = findViewById(R.id.button);
    16. button.setOnClickListener(new View.OnClickListener() {
    17. @Override
    18. public void onClick(View v) {
    19. String id = ((EditText) findViewById(R.id.id)).getText().toString();
    20. String name = ((EditText) findViewById(R.id.name)).getText().toString();
    21. String password = ((EditText)findViewById(R.id.password)).getText().toString();
    22. String stuId = ((EditText)findViewById(R.id.stuNo)).getText().toString();
    23. if ("".equals(id) || "".equals(name) || "".equals(password) || "".equals(stuId)) {
    24. Toast.makeText(MainActivity.this, "请将信息输入 完整", Toast.LENGTH_SHORT).show();
    25. } else if (!"".equals(id) && !"".equals(name) && !"".equals(password) && !"".equals(stuId)) {
    26. Intent intent = new Intent(MainActivity.this, LoginActivity.class);
    27. Bundle bundle = new Bundle();
    28. bundle.putCharSequence("id", id);
    29. bundle.putCharSequence("name", name);
    30. bundle.putCharSequence("password", password);
    31. bundle.putCharSequence("stuId", stuId);
    32. intent.putExtras(bundle);
    33. startActivity(intent);
    34. }
    35. }
    36. });
    37. }
    38. }

    1.4 调用另一个Activiy返回结果(startActivityForResult)

    待补充

    二:Fragment

    2.1 加载Fragment

    创建一个布局文件

    将该布局文件加载到Fragment中

    1. package com.example;
    2. import android.os.Bundle;
    3. import android.view.LayoutInflater;
    4. import android.view.View;
    5. import android.view.ViewGroup;
    6. import androidx.annotation.NonNull;
    7. import androidx.annotation.Nullable;
    8. import androidx.fragment.app.Fragment;
    9. public class ListFragment extends Fragment {
    10. @Nullable
    11. @Override
    12. public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
    13. //加载布局文件
    14. View view = inflater.inflate(R.layout.ftagment,container,false);
    15. return view;
    16. }
    17. }

    将Fragment添加到activity中

    直接在布局文件中添加Fragment,在activity_main中添加fragment

    1. "1.0" encoding="utf-8"?>
    2. xmlns:android="http://schemas.android.com/apk/res/android"
    3. xmlns:tools="http://schemas.android.com/tools"
    4. xmlns:app="http://schemas.android.com/apk/res-auto"
    5. android:layout_width="match_parent"
    6. android:layout_height="match_parent"
    7. tools:context=".MainActivity">
    8. android:layout_width="match_parent"
    9. android:layout_height="wrap_content"
    10. android:name="com.example.ListFragment"
    11. android:id="@+id/frg"
    12. />

    动态添加Fragment,当activity正在运行的时候添加fragment

    1. ListFragment listFragment = new ListFragment();
    2. FragmentTransaction fragmentTransaction = getSupportFragmentManager().beginTransaction();
    3. fragmentTransaction.add(android.R.id.content,listFragment);
    4. fragmentTransaction.commit();

    2.2 Fragment实例

    1. package com.example;
    2. import android.view.View;
    3. import android.widget.ImageView;
    4. import androidx.appcompat.app.AppCompatActivity;
    5. import android.os.Bundle;
    6. import androidx.fragment.app.Fragment;
    7. import androidx.fragment.app.FragmentManager;
    8. import androidx.fragment.app.FragmentTransaction;
    9. public class MainActivity extends AppCompatActivity {
    10. @Override
    11. protected void onCreate(Bundle savedInstanceState) {
    12. super.onCreate(savedInstanceState);
    13. setContentView(R.layout.activity_main);
    14. ImageView imageView1 = findViewById(R.id.id1);
    15. ImageView imageView2 = findViewById(R.id.id2);
    16. imageView1.setOnClickListener(onClickListener);
    17. imageView2.setOnClickListener(onClickListener);
    18. }
    19. View.OnClickListener onClickListener = new View.OnClickListener() {
    20. @Override
    21. public void onClick(View v) {
    22. FragmentManager fragmentManager = getSupportFragmentManager();
    23. FragmentTransaction ft = fragmentManager.beginTransaction();
    24. Fragment fragment = null;
    25. switch (v.getId()){
    26. case R.id.id1:
    27. fragment = new WeChatFragment();
    28. break;
    29. case R.id.id2:
    30. fragment = new FindFragment();
    31. break;
    32. default:
    33. break;
    34. }
    35. ft.replace(R.id.f1,fragment);
    36. ft.commit();
    37. }
    38. };
    39. }

    三:Intent

    3.1 Intent对象属性

    3.1.1 setComponent

    我们可以通过setCompotent来启动另一个activity

    1. Intent intent = new Intent();
    2. ComponentName componentName = new ComponentName("com.example","com.example.LoginActivity");
    3. intent.setComponent(componentName);
    4. startActivity(intent);

    3.1.2 Action和Data

    打电话和发短信的权限设置

    1. <uses-permission android:name="android.permission.CALL_PHONE">uses-permission>
    2. <uses-permission android:name="android.permission.SEND_SMS">uses-permission>

    1. package com.example;
    2. import android.content.ComponentName;
    3. import android.content.Intent;
    4. import android.net.Uri;
    5. import android.view.View;
    6. import android.widget.Button;
    7. import android.widget.ImageButton;
    8. import android.widget.ImageView;
    9. import androidx.appcompat.app.AppCompatActivity;
    10. import android.os.Bundle;
    11. public class MainActivity extends AppCompatActivity {
    12. @Override
    13. protected void onCreate(Bundle savedInstanceState) {
    14. super.onCreate(savedInstanceState);
    15. setContentView(R.layout.activity_main);
    16. ImageView imageView1 = findViewById(R.id.i1);
    17. ImageView imageView2 = findViewById(R.id.i2);
    18. imageView1.setOnClickListener(l);
    19. imageView2.setOnClickListener(l);
    20. }
    21. View.OnClickListener l = new View.OnClickListener() {
    22. @Override
    23. public void onClick(View v) {
    24. Intent intent = new Intent();
    25. ImageButton imageButton = (ImageButton) v;
    26. switch (imageButton.getId()){
    27. case R.id.i1:
    28. //拨打电话
    29. intent.setAction(intent.ACTION_DIAL);
    30. intent.setData(Uri.parse("tel:18306857492"));
    31. startActivity(intent);
    32. break;
    33. case R.id.i2:
    34. intent.setAction(intent.ACTION_SENDTO);
    35. intent.setData(Uri.parse("smsto:5555555"));
    36. intent.putExtra("sms_body","Welcome");
    37. startActivity(intent);
    38. break;
    39. }
    40. }
    41. };
    42. }

    3.1.3 Action和Categories

    具体内容查看API

    1. Intent intent = new Intent();
    2. intent.setAction(Intent.ACTION_MAIN);
    3. //返回桌面
    4. intent.addCategory(Intent.CATEGORY_HOME);
    5. startActivity(intent);

    3.1.4 Extras和Flags

    多个activity交换数据

    putExtras()

    getExtras()

    intent.setFlags(intent.FLAG_ACTIVITY_NO_HISTORY)

    这句话意思是一旦离开了界面我们就需要从历史栈中重新加载activity

    3.2 Intent种类

    显示intent

    Intent intent = new Intent(MainActivity.this,AppCompatActivity.class);
    

     隐示Intent

    我们直接创建action、data、category来使用Intent

    1. Intent intent = new Intent();
    2. intent.setAction(Intent.ACTION_MAIN);
    3. //返回桌面
    4. intent.addCategory(Intent.CATEGORY_HOME);
    5. startActivity(intent);

  • 相关阅读:
    【Java】Quartz定时作业的创建
    市场情绪:新高新低指标(NHNL)
    编程学习的方向与赛道的选择没有最优解的
    问道管理:股票空头是什么意思?
    Java面试大全-基础(持续更新中)
    [Power Query] 删除重复项
    quartus ii 9.0版本报错闪退
    2021年9月电子学会图形化四级编程题解析含答案:小猫钓鱼
    大学生餐饮主题网页制作 美食网页设计模板 学生静态网页作业成品 dreamweaver美食甜品蛋糕HTML网站制作
    springboot社工服务中心管理信息系统毕业设计源码021009
  • 原文地址:https://blog.csdn.net/qq_56127002/article/details/127519665