Android开发从入门到放弃(1)在Activity之间传递数据

来源:互联网 发布:批量注册淘宝号 编辑:程序博客网 时间:2024/05/18 02:35

在本篇博客中,我将做一个简单的Android APP,用于演示以下内容:

  1. 如何与文本框等基本控件交互
  2. 如何启动另一个Activity
  3. 如何向另一个Activity传递数据
  4. 如何接收另一个Activity的返回数据

打开Android Studio,选择菜单File=>New=>New Project,Applicatin Name框中输入activityswitcher,Company Domain框中输入zdk.example.com(读者可以随便输入名字),点击Next,然后再点击Next,在Add an Activity to Mobile页,选择Empty Activity,点击Next,在Customize the Activity页,保持默认的名字MainActivity,直接点击Finish。

接下来,开始修改MainActivity。首先,打开app/res/layout/activity_main.xml文件,将内容修改为

<?xml version="1.0" encoding="utf-8"?><LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"    xmlns:tools="http://schemas.android.com/tools"    android:id="@+id/activity_main"    android:layout_width="match_parent"    android:layout_height="match_parent"    android:orientation="vertical"    tools:context="com.example.zdk.activityswitcher.MainActivity">    <EditText        android:layout_width="match_parent"        android:layout_height="wrap_content"        android:id="@+id/txtInfo"/>    <Button        android:layout_width="match_parent"        android:layout_height="wrap_content"        android:onClick="onClickSwitchActivity"        android:text="open second activity"/></LinearLayout>

然后打开app/java/com.example.zdk.activityswitcher/MainActivity类,将代码修改为

package com.example.zdk.activityswitcher;import android.content.Intent;import android.support.v7.app.AppCompatActivity;import android.os.Bundle;import android.view.View;import android.widget.EditText;import android.widget.Toast;public class MainActivity extends AppCompatActivity {    @Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.activity_main);    }    public static String INFO_KEY = "INFO-KEY";    public void onClickSwitchActivity(View view){        EditText txtInfo = (EditText) findViewById(R.id.txtInfo);        String str = txtInfo.getText().toString();        Intent intent = new Intent(this , MySecondActivity.class);        intent.putExtra(INFO_KEY,str);        startActivityForResult(intent,1);    }    @Override    protected void onActivityResult(int requestCode, int resultCode, Intent data) {        Toast.makeText(this,data.getStringExtra("msg"),Toast.LENGTH_LONG).show();    }}

以上代码的大概逻辑是:你在文本框中输入点内容,然后点击open second activity按钮,在onClickSwitchActivity方法中,首先获取文本框中输入的内容,然后实例化一个Intent,将输入的内容放到intent对象中,最后通过startActivityForResult方法启动另一个Activity,并且等待Activity返回。
下面重载了onActivityResult方法,当另一个Activity返回结果时,此方法会被调用。此方法获取到Activity的返回值并通过Toast显示出来。

接下来,在Project窗口内选中app文件夹,然后右键选择菜单New =>Activity =>Empty Activity,输入MySecondActivity,点击Finish。
打开activity_my_second.xml,将代码修改为:

<?xml version="1.0" encoding="utf-8"?><LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"    xmlns:tools="http://schemas.android.com/tools"    android:id="@+id/activity_my_second"    android:layout_width="match_parent"    android:layout_height="match_parent"    android:paddingBottom="@dimen/activity_vertical_margin"    android:paddingLeft="@dimen/activity_horizontal_margin"    android:paddingRight="@dimen/activity_horizontal_margin"    android:paddingTop="@dimen/activity_vertical_margin"    android:orientation="vertical"    tools:context="com.example.zdk.activityswitcher.MySecondActivity">    <TextView        android:layout_width="wrap_content"        android:layout_height="wrap_content"        android:id="@+id/txtMessage"        />    <Button        android:layout_width="match_parent"        android:layout_height="wrap_content"        android:text="back"        android:onClick="backClick"/></LinearLayout>

然后打开MySecondActivity.java,将代码修改为

package com.example.zdk.activityswitcher;import android.content.Intent;import android.support.v7.app.AppCompatActivity;import android.os.Bundle;import android.view.View;import android.widget.TextView;public class MySecondActivity extends AppCompatActivity {    String msg ="";    @Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.activity_my_second);        msg = getIntent().getStringExtra(MainActivity.INFO_KEY);        TextView textView = (TextView) findViewById(R.id.txtMessage);        textView.setText(msg);    }    public void backClick(View view){        Intent returnIntent = new Intent();        returnIntent.putExtra("msg","hello,"+msg);        setResult(1,returnIntent);        finish();    }}

在上面的代码中,在onCreate方法中,获取到intent中传递过来的输入显示在界面的TextViwe控件中。
点击按钮后,在backClick方法中,创建一个新的Intent对象,并传递给setResult方法,该方法用于指定Activity的返回Code以及返回值。最后,调用finish方法关闭当前Activity。

罗列了这么多代码,你看懂了吗?祝你的Android开发之路从入门到放弃,不谢!

0 0
原创粉丝点击