安卓应用开发入门:两个 Activity 之间的跳转

关键知识

Intent

Intent(意图),主要实现Activity之间的来回切换和数据传递。Intent是一种轻量级的消息传递机制,这种消息描述了应用中一次操作的动作、动作涉及数据、附加数据。Android系统根据此Intent的描述,负责找到对应的组件,并将Intent传递给调用的组件,并完成组件的调用。

例如,在一个联系人维护的应用中,当一个联系人列表屏幕(假设对应的Activity为listActivity)上,单击某个联系人后,希望能够看到此联系人的详细信息(假设对应的Activity为detailActivity)。为此,listActivity需要构造一个Intent。这个Intent用于告诉系统,用户要做“查看”的动作,此动作对应的查看对象是“某联系人”,然后调用startActivity(Intent intent),将构造的Intent传入,系统会根据Intent中的描述,到AndroidManifest.xml中找到满足此Intent要求的Activity。系统会调用找到的Activity,即detailActivity,最终传入Intent。而detailActivity则会根据此Intent中的描述,执行相应的操作。

主要步骤

  1. 新建一个IntentActivity。
  2. 书写strings.xml文件。
  3. 修改activity_1.xml文件中的代码。去掉其中的“TextView”,添加一个“Botton”。
  4. 书写Activity1.java的代码。
  5. 新建一个Activity2。
  6. 书写strings.xml文件。
  7. 书写activity_2.xml文件。
  8. 书写Activity2代码。

详细步骤

  1. 新建一个IntentActivity
    file —> new —> Activity —> Empty Activity
  2. 书写strings.xml文件
<resources>
    <string name="app_name">IntentAvtivity</string>
    <string name="myFirstButton">我的第一个Button</string>
</resources>

  1. 修改activity_1.xml文件中的代码。去掉其中的“TextView”,添加一个“Botton”。
<?xml version="1.0" encoding="utf-8"?>
<android.support.constraint.ConstraintLayout 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"
    tools:context=".Activity1">

    <Button
        android:id="@+id/myButton1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginTop="137dp"
        android:text="@string/myFirstButton"
        android:textAllCaps="false"
        app:layout_constraintEnd_toEndOf="parent"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintTop_toTopOf="parent" />

</android.support.constraint.ConstraintLayout>
  1. 书写Activity1.java的代码。
package com.example.lyf.twoavtivity;

import android.content.Intent;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;

public class Activity1 extends AppCompatActivity {
   private Button myButton1=null;
   @Override
   protected void onCreate(Bundle savedInstanceState) {
       super.onCreate(savedInstanceState);
       setContentView(R.layout.activity_1);
       myButton1= (Button) findViewById(R.id.myButton1);
       myButton1.setOnClickListener(new MyButtonListener());
   }
   class MyButtonListener implements 
   View.OnClickListener{
       @Override
       public void onClick(View v) {
           Intent intent=new Intent();
           intent.putExtra("test","跳转");
           intent.setClass(Activity1.this,Activity2.class);
           Activity1.this.startActivity(intent);
       }
   }
}

  1. 新建一个Activity2。
    与创建 Activity1 方法相同。
    file —> new —> Activity —> Empty Activity

  2. 书写strings.xml文件。

<resources>
    <string name="app_name">TwoAvtivity</string>
    <string name="myFirstButton">我的第一个Button</string>
    <string name="title_activity_name">Activity2</string>
</resources>

  1. 书写activity_2.xml文件。
<?xml version="1.0" encoding="utf-8"?>
<android.support.constraint.ConstraintLayout 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"
   tools:context=".Activity2">


   <TextView
       android:id="@+id/myTextView"
       android:layout_width="wrap_content"
       android:layout_height="wrap_content"
       android:layout_marginStart="55dp"
       android:layout_marginLeft="55dp"
       android:layout_marginTop="63dp"
       android:text="TextView"
       app:layout_constraintStart_toStartOf="parent"
       app:layout_constraintTop_toTopOf="parent" />
</android.support.constraint.ConstraintLayout>
  1. 书写Activity2代码。
package com.example.lyf.twoavtivity;

import android.content.Intent;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.widget.TextView;

public class Activity2 extends AppCompatActivity {
    private TextView myTextView=null;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_2);
        Intent intent=getIntent();
        String value=intent.getStringExtra("test");
        myTextView=(TextView) findViewById(R.id.myTextView);
        myTextView.setText(value);
    }
}

最后,打开模拟器运行应用查看效果。

发布了34 篇原创文章 · 获赞 18 · 访问量 2951

猜你喜欢

转载自blog.csdn.net/weixin_40608613/article/details/88541725