Andriod开发学习-Starting Another Activity

先给Andriod Studio例程下载地址:https://download.csdn.net/download/zongxiangge2278/10301042

1. Respond to the Send Button
In the file res/layout/activity_main.xml, add the android:onClick attribute to the <Button> element as shown below:

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

2. In the file java/com.example.myfirstapp/MainActivity.java, add the sendMessage() method stub as shown below:

public class MainActivity extends AppCompatActivity {
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
    }

    /** Called when the user clicks the Send button */
    public void sendMessage(View view) {
        // Do something in response to button
    }
}

为了让系统将此方法与android:onClick提供的方法名称进行匹配,签名必须完全如图所示。 具体来说,该方法必须:
◦公开
有无效返回值
有一个视图作为唯一的参数(这将是被点击的视图)
接下来,您将填入此方法以读取文本字段的内容并将该文本传递给其他活动    

Build an Intent 建立一个意图
In MainActivity.java, add the code shown below to sendMessage():

 


public class MainActivity extends AppCompatActivity {
    public final static String EXTRA_MESSAGE = "com.example.myfirstapp.MESSAGE";
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
    }

    /** Called when the user clicks the Send button */
    public void sendMessage(View view) {
        Intent intent = new Intent(this, DisplayMessageActivity.class);
        EditText editText = (EditText) findViewById(R.id.edit_message);
        String message = editText.getText().toString();
        intent.putExtra(EXTRA_MESSAGE, message);
        startActivity(intent);
    }
}

注意:Android Studio将显示无法解析符号错误,因为代码引用了类似Intent和EditText的尚未导入的类。 要导入这些类,您可以1)通过按Alt + Enter(Mac上的Option + Return)或2)在文件顶部手动添加导入语句来使用Android Studio的“导入类”功能。
sendMessage()中有很多事情,所以让我们来解释一下发生了什么。
Intent构造函数有两个参数:
•一个Context作为其第一个参数(这是因为Activity类是Context的一个子类)
•系统应该向其传递意图的应用程序组件的类(在这种情况下,应该启动的活动)。
注意:对DisplayMessageActivity的引用将在Android Studio中引发错误,因为该类尚不存在。 现在忽略错误; 你会很快创建类。
putExtra()方法将EditText的值添加到意图。 一个意图可以携带数据类型作为称为额外的键值对。 您的密钥是一个公共常量EXTRA_MESSAGE,因为下一个活动使用该密钥来检索文本值。 使用应用程序的包名称作为前缀来定义意图附加值的键是一种很好的做法。 这可确保密钥是唯一的,以防您的应用与其他应用交互。
startActivity()方法启动由Intent指定的DisplayMessageActivity实例。 现在你需要创建这个类

Create the Second Activity
1.在项目窗口中,右键单击应用程序文件夹并选择新建>活动>空白活动。
2.在“配置活动”窗口中,为活动名称输入“DisplayMessageActivity”,然后单击完成
Android Studio自动完成三件事:
•通过实现所需的onCreate()方法创建类DisplayMessageActivity.java。
•创建相应的布局文件activity_display_message.xml
•在AndroidManifest.xml中添加所需的<activity>元素。(id)
如果您运行该应用程序并在第一个活动上单击发送按钮,则第二个活动将开始但是为空。 这是因为第二项活动使用模板提供的默认空白布局
    
Display the Message
现在您将修改第二个活动以显示第一个活动传递的消息。
1. In DisplayMessageActivity.java, add the following code to the onCreate() method:

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

   Intent intent = getIntent();
   String message = intent.getStringExtra(MainActivity.EXTRA_MESSAGE);
   TextView textView = new TextView(this);
   textView.setTextSize(40);
   textView.setText(message);

   ViewGroup layout = (ViewGroup) findViewById(R.id.activity_display_message);
   layout.addView(textView);
}
2. Press Alt + Enter (option + return on Mac) to import missing classes
这里有很多事情要做,所以让我们来解释一下:
1.调用getIntent()获取启动活动的意图。无论用户在此处如何浏览,每个活动都会由Intent调用。调用getStringExtra()从第一个活动中检索数据。
2.以编程方式创建一个TextView并设置其大小和消息。
3.将TextView添加到由R.id.activity_display_message标识的布局。您将布局转换为ViewGroup,因为它是所有布局的超类,并且包含addView()方法。
注意:以前版本的Android Studio生成的XML布局可能不包含android:id属性。调用findViewById()将失败,如果布局没有android:id属性。如果是这种情况,请打开activity_display_message.xml并将属性android:id =“@ + id / activity_display_message”添加到布局元素。
您现在可以运行该应用程序。打开时,在文本字段中输入消息,然后单击发送。第二项活动取代屏幕上的第一项活动,显示您在第一项活动中输入的消息。


参考网页:http://androiddoc.qiniudn.com/training/basics/firstapp/starting-activity.html#DisplayMessage
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值