我的第一个android app(二)

参看自 http://developer.android.com/training/basics/firstapp/starting-activity.html


今天是在昨天的基础上,添加上点击动作



点击send之后 显示成




让我们开始吧~

1.第一步,给send  这个按键弄个反应上去

还是之前的activity_main.xml 添加 android:onClick 属性到  <Button> 元素

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

跟范例一样 我取名叫sendMessage
 这就是调用sendMessage方法 ,哪里的方法呢? 

2.第二步,去MainActivity.java(在哪?别闹了好么) 添加个方法 sendMessage

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

View红了是缺少类的支持 鼠标移过去 点击import android.view.View  也可以使用快捷键 Ctrl + Shift + O 去添加缺少的类 (Cmd + Shift + O on Mac).


3.在sendMessage方法中 创建一个意图  Build an Intent

意图的百度定义:

Intent(意图)主要是解决Android应用的各项组件之间的通讯。
Intent负责对应用中一次操作的动作、动作涉及数据、附加数据进行描述,Android则根据此Intent的描述,负责找到对应的组件,将 Intent传递给调用的组件,并完成组件的调用。
因此,Intent在这里起着一个媒体中介的作用,专门提供组件互相调用的相关信息,实现调用者与被调用者之间的解耦。


代码如下:

public  void sendMessage ( View view )  { 
    Intent intent =  new  Intent ( this ,  DisplayMessageActivity . class ); 
    EditText editText =  ( EditText ) findViewById ( R . id . edit_message ); //findViewById() 根据ID获取元素
    String message = editText . getText (). toString (); 
    intent . putExtra ( EXTRA_MESSAGE , message ); 
    
}
putExtar(name,value) name为键名,value为键值 

可参看关于putExtra其他论坛的解释,点击打开

因为 EXTRA_MESSAGE 是新添加的constant 所以需要在使用之前定义 因此,添加EXTRA_MESSAGE定义到顶部MainActivity类:

public  class  MainActivity  extends  Activity  { 
    public  final  static  String EXTRA_MESSAGE =  "com.example.myfirstapp.MESSAGE" ; 
   //...
}

TIPS:缺少import自己添加下吧

4.启用第二个活动

启用startActivity ( intent );  就是把刚才上面添加这一句, 因为这个过程很重要 算是增进理解吧,代码就是这样

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 ); //就多了这句
}

说是启动第二个活动,但是现在没活动,所以要创建第二个活动。

  1. 单击新建  在工具栏上。如果没工具栏就把工具栏打开,在 窗口 -〉开启工具栏
  2. 在出现的窗口中,打开Android的文件夹并选择Android的活动。单击下一步。
  3. 选择BlankActivity,然后单击下一步。
  4. 然后选择你的工程 我的名字叫HELLO 个人各人不一样。后面的看着写,我的你可以做个参考
  • 项目:Hello
  • 活动名称:DisplayMessageActivity
  • 版面名称:activity_display_message
  • 标题:hello
  • 分层家长:com.example.myfirstapp.MainActivity
  • 导航类型:无
点击完成就OK了

点击打开DisplayMessageActivity.java 就在src里 //如果你没弄错- -!  

里面已经有几个方法了 作用的可以自己搜索下加深理解

这个类已经包含了所需的实现的onCreate() 方法。
另外还有的实现onCreateOptionsMenu()方法,但你不会需要它为这个应用程序,您可以将其删除。
还有的实现onOptionsItemSelected()负责处理的操作栏中的行为上的行为。现在这个程序也不需要修改

现在就可以准备修改 onCreate()  方法了

在修改之前,我们还需要修改一个标题字符串 不过如果使用的是Eclipse 会有默认的标题字符串 你也可以修改 

<resources>    ...<stringname="title_activity_display_message">My Message</string></resources>


5.注册活动

原文是这样说的 All activities must be declared in your manifest file, AndroidManifest.xml, using an <activity> element.

意思就是所有的活动都必须在 AndroidManifest.xml文件里 的 <activity>标签里注册登记一下 那我们就注册一下,看起来像这样

<application ... > 
    ... 
    <activity 
        android:name = "com.example.myfirstapp.DisplayMessageActivity" 
        android:label = "@string/title_activity_display_message" 
        android:parentActivityName = "com.example.myfirstapp.MainActivity"  > 
        <meta-data 
            android:name = "android.support.PARENT_ACTIVITY" 
            android:value = "com.example.myfirstapp.MainActivity"  /> 
    </activity> 
</application>
需要注意的是,不同的android版本有点不一样 所以我们使用 <meta-data>对旧版本提供支持

6.收到意向

原文:Every Activity is invoked by an Intent , regardless of how the user navigated there.You can get the Intent that started your activity by calling getIntent() and retrieve the data contained within it.

每个活动调用意向,不管是如何导航到使用者那的。你可以得到的意图是你的活动开始通过调用getIntent()然后可以获取其中包含的数据。


//获取意图消息
	Intent intent = getIntent();
	String message = intent.getStringExtra(MainActivity.EXTRA_MESSAGE);

// 创建文本视图
	    TextView textView = new TextView(this);
	    textView.setTextSize(40);
	    textView.setText(message);


// 设置文本视图作为活动布局
	    setContentView(textView);
完整的代码就是这样。
protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.activity_display_message);
		 // Get the message from the intent
	    Intent intent = getIntent();
	    
	    String message = intent.getStringExtra(MainActivity.EXTRA_MESSAGE);

	    // Create the text view
	    TextView textView = new TextView(this);
	    textView.setTextSize(40);
	    textView.setText(message);

	    // Set the text view as the activity layout
	    setContentView(textView);
	}


保存运行,大功告成。






  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值