参看自 http://developer.android.com/training/basics/firstapp/starting-activity.html
今天是在昨天的基础上,添加上点击动作
点击send之后 显示成
让我们开始吧~
1.第一步,给send 这个按键弄个反应上去
<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/button_send"
android:onClick="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为键值
因为 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 ); //就多了这句
}
说是启动第二个活动,但是现在没活动,所以要创建第二个活动。
- 单击新建
在工具栏上。如果没工具栏就把工具栏打开,在 窗口 -〉开启工具栏
- 在出现的窗口中,打开Android的文件夹并选择Android的活动。单击下一步。
- 选择BlankActivity,然后单击下一步。
- 然后选择你的工程 我的名字叫HELLO 个人各人不一样。后面的看着写,我的你可以做个参考
- 项目:Hello
- 活动名称:DisplayMessageActivity
- 版面名称:activity_display_message
- 标题:hello
- 分层家长:com.example.myfirstapp.MainActivity
- 导航类型:无
点击打开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);
}
保存运行,大功告成。