欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  移动技术

Android开发笔记 第五周作业

程序员文章站 2022-03-24 20:13:28
Android开发笔记 第五周作业一、第一部分1.学习内容:View视图、界面编写方式、常用的布局、常用的资源1.1 Android应用遵循MVC模式:Controller即Activity/Frament,View即用户界面元素,Model即自行编写代码1.2 Activity通过布局管理添加各种View组件,调用Activity的setContentView方法可以将指定的视图对象呈现出来1.3 ViewGroup布局以及注意事项图注意:View支持padding,但是不支持marg...

Android开发笔记 第五周作业

一、第一章节(基础界面)

1.学习内容:

View视图、界面编写方式、常用的布局、常用的资源

1.1 Android应用遵循MVC模式:Controller即Activity/Frament,View即用户界面元素,Model即自行编写代码

1.2 Activity通过布局管理添加各种View组件,调用Activity的setContentView方法可以将指定的视图对象呈现出来

1.3 ViewGroup布局以及注意事项

Android开发笔记 第五周作业

注意:View支持padding,但是不支持margin,viewGroup支持padding和margin

1.4 界面布局编写方式

  • 推荐在XML文件中编写布局
  • 也可在Java代码中编写布局,通过关键字new创建出View

注:具体创建的方法如下图:

  • 1.4.1图Android开发笔记 第五周作业

  • 1.4.2布局之 LinearLayout

  • Android开发笔记 第五周作业

  • 1.4.3例子(登录界面)

<?xml version="1.0" encoding="UTF-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:layout_margin="20dp"
    android:orientation="vertical"
    android:padding="60dp">

    <ImageView
        android:layout_width="80dp"
        android:layout_height="100dp"
        android:layout_gravity="center"
        android:src="@drawable/image1" />


    <LinearLayout
        android:layout_width="wrap_content"
        android:layout_height="wrap_content">

        <ImageView
            android:layout_width="30dp"
            android:layout_height="30dp"
            android:layout_marginLeft="10dp"
            android:layout_marginTop="20dp"
            android:src="@drawable/login_user_name" />

        <EditText
            android:id="@+id/et_username"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_marginLeft="10dp"
            android:layout_marginTop="10dp"
            android:text="请输入用户名"
            android:textSize="22dp" />

    </LinearLayout>


    <LinearLayout
        android:layout_width="wrap_content"
        android:layout_height="wrap_content">

        <ImageView
            android:layout_width="30dp"
            android:layout_height="30dp"
            android:layout_marginLeft="10dp"
            android:layout_marginTop="20dp"
            android:src="@drawable/password" />

        <EditText
            android:id="@+id/et_password"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_marginLeft="10dp"
            android:layout_marginTop="10dp"
            android:text="请输入密码"
            android:textSize="22dp" />
    </LinearLayout>

    <CheckBox
        android:id="@+id/cb_auto_login"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginLeft="5dp"
        android:layout_marginTop="10dp"
        android:text="自动登录"
        android:textSize="18sp" />

    <Button
        android:id="@+id/btn_login"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_marginTop="20dp"
        android:background="#f7a421"
        android:text="登录"
        android:textColor="#FFFFFF"
        android:textSize="24sp"
        android:textStyle="bold" />


    <LinearLayout
        android:layout_width="wrap_content"
        android:layout_height="wrap_content">

        <Button
            android:layout_width="60dp"
            android:layout_height="wrap_content"
            android:layout_margin="20dp"
            android:background="#fafafa"
            android:text="立即注册"
            android:textColor="#afafaf"
            android:textSize="10dp" />

        <Button
            android:layout_width="60dp"
            android:layout_height="wrap_content"
            android:layout_margin="20dp"
            android:background="#fafafa"
            android:text="找回密码?"
            android:textColor="#afafaf"
            android:textSize="10sp" />

    </LinearLayout>

</LinearLayout>
  • 效果图
  • Android开发笔记 第五周作业
  • 1.4.4 RelativeLayout 布局
  • Android开发笔记 第五周作业
  • 练习(代码)
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent">


    <ImageView
        android:id="@+id/iv_pic"
        android:src="@drawable/image1"
        android:layout_centerInParent="true"
        android:layout_width="64dp"
        android:layout_height="64dp"
        />

    <Button
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="左边"
        android:layout_centerVertical="true"
        android:layout_toStartOf="@+id/iv_pic"/>
    <Button
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="上面"
        android:layout_centerHorizontal="true"
        android:layout_above="@+id/iv_pic"/>
    <Button
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="右边"
        android:layout_centerVertical="true"
        android:layout_toEndOf="@+id/iv_pic"/>
    <Button
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="下面"
        android:layout_centerHorizontal="true"
        android:layout_below="@+id/iv_pic"/>
</RelativeLayout>
  • Android开发笔记 第五周作业

  • 1.4.5 TableLayout布局

  • Android开发笔记 第五周作业

  • 练习(随机布局)

<?xml version="1.0" encoding="utf-8"?>
<TableLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:stretchColumns="2">

    <TableRow>
        <Button
            android:layout_weight="wrap_content"
            android:layout_height="wrap_content"
            android:layout_column="0"
            android:text="按钮1"/>
        <Button
            android:layout_weight="wrap_content"
            android:layout_height="wrap_content"
            android:layout_column="1"
            android:text="按钮2"/>

    </TableRow>
    <TableRow>
        <Button
            android:layout_weight="wrap_content"
            android:layout_height="wrap_content"
            android:layout_column="1"
            android:text="按钮3"/>
        <Button
            android:layout_weight="wrap_content"
            android:layout_height="wrap_content"
            android:layout_column="2"
            android:text="按钮4"/>

    </TableRow>
    <TableRow>
        <Button
            android:layout_weight="wrap_content"
            android:layout_height="wrap_content"
            android:layout_column="2"
            android:text="按钮5"/>

    </TableRow>

</TableLayout>

Android开发笔记 第五周作业

  • 1.4.6 FrameLayout布局
    -Android开发笔记 第五周作业
<?xml version="1.0" encoding="utf-8"?>
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:foreground="@mipmap/ic_launcher"
    android:foregroundGravity="left">

    <Button
        android:layout_width="300dp"
        android:layout_height="450dp"
        android:text="按钮1" />

    <Button
        android:layout_width="200dp"
        android:layout_height="200dp"
        android:text="按钮2" />
</FrameLayout>
  • 效果图
  • Android开发笔记 第五周作业
    1.4.7 单位和尺寸介绍

Android开发笔记 第五周作业

2.课外补充内容:

链接: l一文带你全面了解MVC、MVP、MVVM模式(含实例讲解).
链接: lAndroid:我们该如何做一名合格的代码开源者.

二、第二章节(基础控件)

2.1文本控件TextView

2.1.1 布局文件

<TextViewandroid:id="@+id/tv_show"
android:text="@string/content"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textColor="@color/green"
android:textSize="@dimen/title"
android:lines="1"
android:maxWidth="40dp"
android:ellipsize="middle"
android:focusable="true"
android:focusableInTouchMode="true"/>

2.1.2控件属性

android:id  控件唯一标识
android:text    显示的文本信息
android:layout_width    控件宽度
android:layout_height   控件高度
android:textSize    字体大小
android:textColor   字体颜色
android:lines   文本显示行数
 android:maxWidth   最大显示宽度
android:ellipsize   设置当文本过长时如何显示文本内容
start:省略号显示在开头
middle:省略号显示在中间
end:省略号显示在结尾
marquee:以跑马灯方式显示
android:focusable   是否获得焦点
android:
focusableInTouchMode    触摸模式后是否可获得焦点

3.对象获取

protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

    //获取文本对象
    TextView tv_show = (TextView) findViewById(R.id.tv_show);
    //获取android:text属性值
    String text = tv_show.getText().toString();
    //后台日志输出
    Log.i("wl",text);
    //设置android:text
    tv_show.setText("Hello Man");

    //通过getResources()获得资源常量    tv_show.setTextColor(getResources().getColor(R.color.colorPrimary));
    //吐司 在app中输出
    Toast.makeText(this,text,Toast.LENGTH_LONG).show();

}
2.2按钮控件Button

2.2.1布局文件

<Buttonandroid:id="@+id/btn_show"
android:text="按钮"
android:textSize="20sp"
android:layout_marginLeft="10dp"
android:layout_marginTop="10dp"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:onClick="btnClick"/>

2.2.2注册监听

(1)匿名内部类

//获取按钮对象
Button btn_show = (Button) findViewById(R.id.btn_show); 
//注册点击监听 
btn_show.setOnClickListener(new View.OnClickListener() { 
  @Override public void onClick(View v) { 
  Toast.makeText(MainActivity.this,"点击按钮",Toast.LENGTH_LONG).show(); 
  } 
}); 

(2)接口实现

public class MainActivity extends AppCompatActivity implements View.OnClickListener {
   //声明控件对象    Button btn_show ;
   
   @Override
   protected void onCreate(Bundle savedInstanceState) {
       super.onCreate(savedInstanceState);
       setContentView(R.layout.activity_main);
       
       //获取按钮对象
       btn_show = (Button) findViewById(R.id.btn_show);
       //注册点击监听
       btn_show.setOnClickListener(this);

   }
   //实现接口类    @Override
   public void onClick(View v) {
       Toast.makeText(this,"点击按钮",Toast.LENGTH_LONG).show();
   }
}

(3)设置onclick属性

public void btnClick(View v){
   Toast.makeText(this,"点击按钮",Toast.LENGTH_LONG).show();
}

2.2.3按钮背景图片设置及点击效果

(1)在res/drawable下创建btn_selector.xml,选择选中和没选中时的背景图片

<?xml version="1.0" encoding="utf-8"?><selector xmlns:android="http://schemas.android.com/apk/res/android">
   <item android:drawable="@drawable/btn_bg2" android:state_pressed="false"/>
   <item android:drawable="@drawable/btn_bg_p" android:state_pressed="true"/></selector>

(2)按钮布局文件中背景图片使用btn_selector.xml

<Buttonandroid:text="卸载"
android:layout_width="100dp"
android:layout_height="50dp"
android:background="@drawable/btn_selector"
android:textColor="#fff"
android:textSize="18sp"/>
2.3图片控件ImageView

2.3.1布局文件

<ImageViewandroid:src="@drawable/danger"
android:background="@drawable/danger"
android:layout_width="wrap_content"
android:layout_height="wrap_content" />

2.3.2控件属性

android:src
设置ImageView中显示的图片
– 是前景,显示在前面
– 可根据宽高缩放,但是保持图片原有比例
android:background
设置ImageView控件的背景
– 是背景,显示在后面
– 可根据宽高缩放,但是不保持图片原有比例
– 除了图片以外,背景还可以是颜色

2.3.3图片资源

1)注意命名中不得含有中文或大写字母
(2)首字母必须以字母开头
(3)格式png,jpg
2.4输入控件EditText

2.4.1布局文件

<EditTextandroid:hint="请输入"
android:layout_width="match_parent"
android:layout_height="wrap_content" />
2.5 switch的使用

2.5.1 背景: switch_track.xml

<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
    <item android:drawable="@drawable/switch_selected_track" android:state_checked="true" />
    <item android:drawable="@drawable/switch_unselected_track" />
</selector>

2.5.2滑块: switch_thumb.xml

<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"
    android:shape="oval">
    <!-- 滑动块的宽高 -->
    <size
        android:width="20dp"
        android:height="20dp" />
    <solid android:color="#FFFFFF" />
    <!-- 透明的描边-->
    <stroke
        android:width="3dp"
        android:color="@android:color/transparent" />
</shape>

2.5.3选中背景:switch_selected_track.xml

<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"
    android:shape="rectangle">
    <size android:height="20dp" />
    <corners android:radius="10dp" />
    <solid android:color="#00C653" />
</shape>
2.5.4未选中背景: switch_unselected_track.xml
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"
    android:shape="rectangle" >
    <size android:height="20dp"/>
    <corners android:radius="10dp"/>
    <solid android:color="#D9D9D9" />
</shape>

2.5.5使用方法

<Switch
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:switchMinWidth="20dp"
    android:thumb="@drawable/switch_thumb"
    android:track="@drawable/switch_track" />
2.6ListView的使用

2.6.1 布局文件

  • 总体布局
<ListView
    android:id="@+id/lv_good"
    android:layout_width="match_parent"
    android:layout_height="match_parent"/>
  • 每一项布局
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:orientation="horizontal"
    android:padding="16dp">
    <ImageView
        android:id="@+id/iv_pic"
        android:layout_width="120dp"
        android:layout_height="90dp"/>
    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_gravity="center_vertical"
        android:layout_marginStart="10dp"
        android:orientation="vertical">
        <TextView
            android:id="@+id/tv_title"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="桌子" 
            android:textSize="20sp"/>
        <LinearLayout
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:orientation="horizontal">
            <TextView
                android:id="@+id/tv_price_name"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:text="价格:"
                android:textSize="20sp"/>
            <TextView
                android:id="@+id/tv_price"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:text="100"
                android:textColor="#ff8f03"
                android:textSize="20sp"/>  
        </LinearLayout>
    </LinearLayout>
</LinearLayout>

2.6.2 适配器

package com.example.listviewdemo;

import android.content.Context;
import android.view.View;
import android.view.ViewGroup;
import android.widget.BaseAdapter;
import android.widget.ImageView;
import android.widget.TextView;


import java.util.List;

public class GoodsAdapter extends BaseAdapter {
    private Context context;
    private List<Goods> datas;

    public GoodsAdapter() {
    }

    public GoodsAdapter(Context context, List<Goods> datas) {
        this.context = context;
        this.datas = datas;
    }

    @Override
    public int getCount() {
        return datas.size();
    }

    @Override
    public Object getItem(int i) {
        return datas.get(i);
    }

    @Override
    public long getItemId(int i) {
        return i;
    }

    @Override
    public View getView(int i, View view, ViewGroup viewGroup) {
        ViewHolder holder = null;
        if (view == null) {
            view = View.inflate(context, R.layout.item_list, null);
            holder = new ViewHolder();
            holder.tvTitle = view.findViewById(R.id.tv_title);
            holder.tvPrice = view.findViewById(R.id.tv_price);
            holder.ivPic = view.findViewById(R.id.iv_pic);
            view.setTag(holder);
        } else {
            holder = (ViewHolder) view.getTag();
        }
        Goods goods = datas.get(i);
        holder.tvTitle.setText(goods.getTitle());
        holder.tvPrice.setText(goods.getPrice());
        holder.ivPic.setBackgroundResource(goods.getIcon());
        return view;
    }

    static class ViewHolder {
        TextView tvTitle;
        TextView tvPrice;
        ImageView ivPic;
    }
}

2.6.3 主文件的使用

package com.example.listviewdemo;

import androidx.appcompat.app.AppCompatActivity;

import android.os.Bundle;
import android.view.View;
import android.widget.AdapterView;
import android.widget.BaseAdapter;
import android.widget.ListView;
import android.widget.Toast;

import java.io.PipedReader;
import java.util.ArrayList;
import java.util.List;

public class MainActivity extends AppCompatActivity {
    private String[] titles = {"桌子", "苹果", "蛋糕", "毛衣", "猕猴桃", "围巾"};
    private String[] prices = {"1800元", "10元/千克", "300元", "350元", "10元/kg", "280元"};
    private int[] icons = {
            R.drawable.table, R.drawable.apple, R.drawable.cake, R.drawable.wireclothes, R.drawable.kiwifruit, R.drawable.scarf
    };

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        
        initData();
        initView();
    }

    private void initView() {
        ListView lvGoods=findViewById(R.id.lv_good);
        BaseAdapter adapter=new GoodsAdapter(this,goods);
        lvGoods.setAdapter(adapter);
        lvGoods.setOnItemClickListener(new AdapterView.OnItemClickListener() {
            @Override
            public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
                Goods goods=(Goods) parent.getItemAtPosition(position);
                Toast.makeText(MainActivity.this,goods.toString(),Toast.LENGTH_LONG).show();

            }
        });
    }

    private List<Goods> goods;
    private void initData() {
        goods=new ArrayList<>();
        for (int i=0;i<titles.length;i++){
            goods.add(new Goods(titles[i],prices[i],icons[i]));
        }

    }
}

2.6.4 补充类的创建

package com.example.listviewdemo;

import java.io.Serializable;

public class Goods implements Serializable {
    private String title;
    private String price;
    private int icon;


    public Goods() {
    }

    public Goods(String title, String price, int icon) {
        this.title = title;
        this.price = price;
        this.icon = icon;
    }

    public String getTitle() {
        return title;
    }

    public void setTitle(String title) {
        this.title = title;
    }

    public String getPrice() {
        return price;
    }

    public void setPrice(String price) {
        this.price = price;
    }

    public int getIcon() {
        return icon;
    }

    public void setIcon(int icon) {
        this.icon = icon;
    }

    @Override
    public String toString() {
        return "Goods{" +
                "title='" + title + '\'' +
                ", price='" + price + '\'' +
                ", icon=" + icon +
                '}';
    }
}

  • 效果图
  • Android开发笔记 第五周作业

三、第三章节(Activity)

3.1生命周期讲解

Activity的生命周期共七个指示器:onCreate、onStart、onResume、onPause、onStop、onDestroy、onRestart。

  • 3.1.1 onCreate() ,不可见状态
    在Activity被创建时回调,第一个生命周期。我们一般在创建Activity时需要重写该方法做一些初始化的操作,如通过setContentView设置界面布局的资源,初始化所需要的组件信息等。

  • 3.1.2 onStart() ,可见状态
    该方法回调表示Activity正在启动,此时Activity处于可见状态,只是还没有在前台显示,因此用户也无法交互。可以简单理解为Activity已显示却无法被用户看见。

  • 3.1.3 onResume() ,可见状态
    此方法回调时,Activity已在在屏幕上显示UI并允许用户操作了。从流程图可见,当Activity停止后(onPause、onStop方法被调用),重新回到前台时也会调用onResume方法。可以在onResume方法中初始化一些资源,比如打开相机或开启动画。

  • 3.1.4 onPause() ,可见状态
    此方法回调时,Activity正在停止(Paused形态),通常接下来 onStop() 会被回调 。但通过流程图可见,另一种情况是onPause() 执行后直接执行了onResume方法,这可能是用户点击Home键,让程序退回到主界面,程序在后台运行时又迅速地再回到到当前的Activity,此时onResume方法就会被回调。我们可以在onPause方法中做一些数据存储、动画停止、资源回收等操作。另外,onPause方法执行完成后,新Activity的onResume方法才会被执行。所以onPause不能太耗时,因为这可能会影响到新的Activity的显示。

  • 3.1.5 onStop() ,不可见状态
    此方法回调时,Activity即将停止或者完全被覆盖(Stopped形态),此时Activity不可见,仅在后台运行。同样地,在onStop方法可以做一些资源释放的操作,不能太耗时。

  • 3.1.6 onRestart(),可见状态
    此方法回调时,表示Activity正在重新启动,由不可见状态变为可见状态。这种情况,一般发生在用户打开了一个新的Activity时,之前的Activity就会被onStop,接着又回到之前Activity页面时,之前的Activity的 onRestart方法就会被回调。

  • 3.1.7 onDestroy() ,不可见状态
    此方法回调时,表示Activity正在被销毁,也是生命周期最后一个执行的方法,一般我们可以在此方法中做一些回收工作和最终的资源释放。

  • 如图所示

  • Android开发笔记 第五周作业

  • 3.1.8 课外补充:启动模式

  • 启动模式
    standard 模式
    每次start都会创建一个新的实例
    singleTop 模式
    栈顶复用模式,顾名思义,在这种模式下,如果有新的Activity已经存在任务栈的栈顶,那么此Activity就不会被重新创建新实例,而是复用已存在任务栈栈顶的Activity。
    singleTask 模式
    栈内复用模式,在这种模式下,如果任务栈已经有要启动的Activity,那么此Activity就不会被重新创建新实例,而是复用已经存在的Activity,并将这个Act之上的其他Activity移除。
    singleInstance 模式
    以singleInstance模式启动的Activity在整个系统中是单例的,如果在启动这样的Activiyt时,已经存在了一个实例,那么会把它所在的任务调度到前台,重用这个实例。如果singleInstance的Activity被复用了,会将原来的act直接移动到现在位置上,不像singleTask那样会移除其他实例。从singleInstance启动其他Act,回退时不会显示原来的singleInstance Act,会在回退顺序的最后一层显示(除开singleInstance本来就是初始界面的情况)。

3.2Intent介绍

3.2.1 intent
Intent分为两种类型:
(1) 显式Intent
知道要启动的组件确切名称,通过传入具体组件名称来启动组件。 通常启动自己应用中的组件都是通过显式Intent,因为要启动的 Activity 或服务的类名我们是知道的。
通常这样来使用:

Intent intent = new Intent(this, MainActivity.class);
intent.putExtra("key", "value");
startActivity(intent);

(2)隐式Intent
在不确切的知道要打开哪个组件的情况下,通过指出action、data、category等信息,系统会寻找到匹配的组件。 例如,如需在地图上向用户显示位置,则可以使用隐式 Intent,请求另一具有此功能的应用在地图上显示指定的位置。
3.2.2 使用

ntent对象携带了 Android 系统用来确定要启动哪个组件的信息(例如,准确的组件名称或应当接收该 Intent 的组件类别),以及收件人组件为了正确执行操作而使用的信息(例如,要采取的操作以及要处理的数据)。Intent 中包含的主要信息如下:组件名称,要启动的组件名称。如需在应用中启动特定的组件,则应指定该组件的名称。如下所示,其中SecondActivity.class即为限定的组件名称,可用Intent构造函数或setComponent()、setClass()、setClassName()设置组件名称:
方法1:在构造函数中传入Component

Intent intent = new Intent(this,SecondActivity.class);
startActivity(intent);

方法2:设置Component

Intent intent = new Intent();  
ComponentName componentName = new ComponentName(this, SecondActivity.class);  
// 或者ComponentName componentName = new ComponentName(this, "com.example.myapplication.SecondActivity");  
// 或者ComponentName componentName = new ComponentName(this.getPackageName(), "com.example.myapplication.SecondActivity");  
intent.setComponent(componentName);  
startActivity(intent); 

方法3:设置Class

Intent intent = new Intent();  
intent.setClass(this, SecondActivity.class);  
// 或者intent.setClassName(this, "com.example.myapplication.SecondActivity");  
// 或者intent.setClassName(this.getPackageName(), "com.example.myapplication.SecondActivity");  
startActivity(intent);
3.3Fragment

Android开发笔记 第五周作业

Android开发笔记 第五周作业
3.3.2 课外知识引用
Fragment和Activity的交互:
1、在Fragment中调用Activity中的方法:
Fragment可以通过getActivity()方法来获得Activity的实例,然后就可以调用一些例如findViewById()之类的方法。例如:

View listView = getActivity().findViewById(R.id.list);

但是注意调用getActivity()时,fragment必须和activity关联(attached to an activity),否则将会返回一个null。

另外,当碎片中需要使用Context对象时,也可以使用getActivity()方法,因此获取到的活动本身就是一个Context对象。

在Activity中调用Fragment中的方法:(要用到接口回调)
activity也可以获得一个fragment的引用,从而调用fragment中的方法。获得fragment的引用要用FragmentManager,之后可以调用findFragmentById() 或者 findFragmentByTag()。例如:

ExampleFragment fragment = (ExampleFragment) getFragmentManager().findFragmentById(R.id.example_fragment);

也可以通过接口回调的方式来进行fragment给activity传值

文章结束

包含课内和课外的知识点

本文地址:https://blog.csdn.net/weixin_49762671/article/details/109002653