难点:
(1)如何打开一个新的页面
(2)如何传递数据到一个新的页面
开发步骤:
1. 新建单Activty和Layout的基础App
2. 添加第二个Activty和Layout
3. 从第一个Activty打开第二个Activty
4. 从第一个Activty传递数据
1. 新建单Activty和Layout的基础App
字体美观等问题在考试时不做具体要求
主要关注以下内容:
android:id 控件id号
示例:android:id="@+id/message"
android:text 引用string.xml中的键值对”@string/stringname”
示例:android:text="@string/send"
android:hint="@string/hint"
android:onclick 事件响应
示例:android:onClick="onSendMessage"
Java的方法:要有权限、返回值和参数
TODO功能:程序员最大的谎言,暂时跳过无法实现的功能
2. 添加第二个Activty和Layout
新建activity时Launcher Activity选项指定入口activity。
AndroidMainifest.xml文件:manifest本意为“清单”,需要在清单中声明该App中添加新activity的存在。代码如下:
<activity android:name=".ReceiveMessageActivity">
</activity>
主界面(入口界面)<activity>中会有以下代码
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
表明该activity存在过滤这两条消息的权限,因此为入口界面。
3. 从第一个Activty打开第二个Activty
使用new关键字创建一个intent对象,两个参数,从哪里来,到哪里去
新建Intent打开,设置收件Activity
Intent intent = new Intent(this, Target.class);
向Android发出请求
startActivity(intent);
(注:startActivity方法来自建立该activity类时继承的Activity类:
public class CreateMessageActivity extends Activity)
intent的作用:在安卓中传递各种消息,安卓中的信使。
截止到现在App启动的完整步骤为:
1. App启动后,进入入口(main)Activity
在AndroidManifest.xml中指定main Activity
2. 用户点击按钮
进入第一个Activity定义的事件响应方法onSendMessage
3. 在onSendMessage中发出Intent
4. 第2个Activty启动,加载自己的Layout
4. 从第一个Activty传递数据
传递数据并显示消息:
1. 修改第二个Activity的布局:activity_receive_message.xml 2. 在Intent中附加消息内容:intent.putExtra("message", value)
3. 升级第二个Activty,解析并显示Intent中附加的消息内容
在第一个activity的按钮事件响应里put
public void onSendMessage(View view){
//TODO start the 2nd Activity
EditText messageView = (EditText)findViewById(R.id.message);
String messageText = messageView.getText().toString();
Intent intent = new Intent(this,ReceiveMessageActivity.class);
intent.putExtra(ReceiveMessageActivity.EXTRA_MESSAGE,messageText);
startActivity(intent);
}
在第二个activity加载时get
public class ReceiveMessageActivity extends Activity {
public static final String EXTRA_MESSAGE = "message";
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_receive_message);
Intent intent = getIntent();
String messageText = intent.getStringExtra(EXTRA_MESSAGE);
TextView messageView = (TextView)findViewById(R.id.message);
messageView.setText(messageText);
}
}
拓展:把一个编辑框的消息分享到微信中,实现方法在下面的文章中给出。