1.1建立第一个App

将编辑框中的文字发送到另一个页面


1.1建立第一个App
 
1.1建立第一个App
 

activtiy_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:orientation="horizontal"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:showIn="@layout/activity_main">

    <EditText
        android:id="@+id/edit_message"
        android:layout_weight="1"
        android:layout_width="0dp"
        android:layout_height="wrap_content"
        android:hint="@string/edit_message"/>

    <Button
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="@string/button_send"
        android:textAllCaps="false"
        android:onClick="sendMessage"/>
</LinearLayout>

activity_content.xml

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:id="@+id/content"
    tools:context="com.mycompany.myfirstapp.Content">

</RelativeLayout>

MainActivity

public class MainActivity extends AppCompatActivity {

    /*
    为了让新启动的activity能查询extra数据。定义key为一个public型的常量,
    通常使用应用程序包名作为前缀来定义键,这样在应用程序与其他应用程序
    进行交互时仍可以确保键是唯一的。
     */
    public final static String EXTRA_MESSAGE="com.mycompany.myfirstapp.MESSAGE";

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

    public void sendMessage(View view){
        /*
        在这个Intent构造函数中有两个参数:
        第一个参数是Context(之所以用this是因为当前Activity是Context的子类)
        第二个参数是接受系统发送Intent的应用组件的Class(在这个案例中,
指将要被启动的activity)
         */
        Intent intent=new Intent(this,Content.class);
        //用findViewById()方法得到EditText元素
        EditText editText= (EditText) findViewById(R.id.edit_message);
        //把EditText的文本内容关联到一个本地message变量,并使用putExtra()方法把值传给intent
        String message=editText.getText().toString();
        intent.putExtra(EXTRA_MESSAGE,message);
        /*
        Intent可以携带称作extras的键-值对数据类型。
        putExtra()方法把键名作为第一个参数,把值作为第二个参数
         */
        //调用startActivity完成新activity的启动
        startActivity(intent);
    }
    //运行这个方法,系统收到我们的请求后会实例化在Intent中指定的Activity

}

Content

/*
不管用户导航到哪,每个Activity都是通过Intent被调用的。
我们可以通过调用getIntent()来获取启动activity的Intent及其包含的数据。
 */
public class Content extends AppCompatActivity {

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

        //得到intent并赋值给本地变量
        Intent intent=getIntent();
        //调用getStringExtra提取从MainActivity传递过来的消息
        String message=intent.getStringExtra(MainActivity.EXTRA_MESSAGE);
        //创建一个对象TextView
        TextView textView=new TextView(this);
        //用setText()来设置文本字体大小和内容
        textView.setTextSize(40);
        textView.setText(message);

        RelativeLayout layout= (RelativeLayout) findViewById(R.id.content);
        layout.addView(textView);
    }
}

相关推荐