Andriod intent 用法实例(备忘)

适合小白,我就是小白。

Intent是一种运行时绑定(run-time binding)机制,它能在程序运行过程中连接两个不同的组件。通过Intent,你的程序可以向Android表达某种请求或者意愿,Android会根据意愿的内容选择适当的组件来完成请求。比如,有一个Activity希望打开网页浏览器查看某一网页的内容,那么这个Activity只需要发出WEB_SEARCH_ACTION给Android,Android就会根据Intent的请求内容,查询各组件注册时声明的IntentFilter,找到网页浏览器的Activity来浏览网页。
Android的三个基本组件——Activity,Service和Broadcast Receiver——都是通过Intent机制激活的,不同类型的组件有不同的传递Intent方式.

(具体方法百度很多,写的都不错。)

实例:

新建项目(new-project),是空的,还是基本的看自己喜欢。

 项目名称看自己喜欢。

 默认是这两个主要文件,MainActivity.java和content_main.xml,打开的位置看左面:

 要增加两个文件,实现intent跳转进行数据传递:

 基本文件准备完成,要修改androidmanifest.xml增加SecondActivity文件,不然无法跳转,我开始就卡要这里了。没加,程序执行不了。增加也很简单,基本都可以自动生成。

 下面就是代码:

MainActivity.java代码,第一行不要复制,除非我们起的名字一样,这里有些库可能用不取,我懒的改,反正多了也没事:

package com.example.intent;

import android.content.Intent;
import android.os.Bundle;

import com.google.android.material.floatingactionbutton.FloatingActionButton;
import com.google.android.material.snackbar.Snackbar;

import androidx.appcompat.app.AppCompatActivity;
import androidx.appcompat.widget.Toolbar;

import android.view.View;
import android.view.Menu;
import android.view.MenuItem;
import android.widget.Button;
import android.widget.EditText;

public class MainActivity extends AppCompatActivity {

    //声明控件对象
    private EditText editText1;
    private EditText editText2;
    private Button button;

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

        //获取控件的对象
        editText1 = findViewById(R.id.edit_1);
        editText2 = findViewById(R.id.edit_2);
        button = findViewById(R.id.button);

        //为Button绑定监听器
        button.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                //获取文本输入框中的内容
                String editTextStr1 = editText1.getText().toString();
                String editTextStr2 = editText2.getText().toString();
                //创建intent对象,参数分别为上下文、要跳转的Activity类
                Intent intent = new Intent(MainActivity.this, SecondActivity.class);
                //将要传递的值附加到Intent对象中暂时保存
                intent.putExtra("extra_data1", editTextStr1);
                intent.putExtra("extra_data2", editTextStr2);
                //启动该intent对象,实现Activity跳转
                startActivity(intent);
            }
        });
    }
}

content_main.xml代码,就把三个控件的代码复制过去就行了,其他不动:

    <EditText
        android:id="@+id/edit_1"
        android:layout_width="match_parent"
        android:layout_height="wrap_content" />

    <EditText
        android:id="@+id/edit_2"
        android:layout_width="match_parent"
        android:layout_height="wrap_content" />

    <Button
        android:id="@+id/button"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:text="Button"
        android:textAllCaps="false" />

secondActivity.java内容,依然不要复制第一行。

package com.example.intent;

import android.content.Intent;
import android.os.Bundle;
import android.widget.TextView;

import androidx.appcompat.app.AppCompatActivity;

public class SecondActivity extends AppCompatActivity {

    //声明TextView对象
    private TextView textView;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_second);

        //获取TextView控件对象
        textView = findViewById(R.id.text_view);

        //获取启动该Activity的Intent对象
        Intent intent = getIntent();

        //获取Intent中暂存的数据
        String data1 = intent.getStringExtra("extra_data1");
        String data2 = intent.getStringExtra("extra_data2");

        //将MainActivity中两个输入框的输入的内容一同在SecondActivity的TextView控件中显示出来
        textView.setText(data1 + " " + data2);
    }
}

activity_second.xml文件,只有一个控制,加进去就行了,其他不动。

 <TextView
        android:id="@+id/text_view"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_weight="1"
        android:textSize="50dp"
        android:text="TextView" />

运行结果:

 点击button后的结果:

猜你喜欢

转载自blog.csdn.net/kim5659/article/details/121304773
今日推荐