一、绑定事件的方法:
1、方法一:UI组件事件属性调用
main.xml:
<Button
android:id="@+id/button1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:onClick="forWard"
android:text="跳转" />
<EditText
android:id="@+id/editText2"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
>
Main.java:
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
/**接收调用Input.java中startActivity方法传递过来的数据*/
EditText editText2=(EditText)this.findViewById(R.id.editText2);
Intent intent = getIntent();
String text= intent.getStringExtra(Input.EXTRA_MESSAGE);
if(text!= null){
editText2.setText(text);
}
}
/**UI组件事件属性调用*/
public void forWard(View view){
Intent intent = new Intent(Main.this,Input.class);
startActivity(intent);//定义好的intent对象启动一个Activity 跳向Input.java
}
input.xml:
<EditText
android:id="@+id/editText1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_weight="1"
android:ems="10"
android:hint="请输入"
android:inputType="textPersonName" >
</EditText>
<Button
android:id="@+id/button1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_weight="1"
android:text="返回数据"
android:onClick="sendMessage"
/>
Input.java:
static String EXTRA_MESSAGE="text";
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);//将Activity和Views绑定,实现用户交互
setContentView(R.layout.input);
}
/**UI组件事件属性调用:startActivity*/
public void sendMessage(View view) {
// 获取用户在该页面输入的值,传送给Main.java
Intent intent = new Intent(this, Main.class);//MainActivity向DisplayMessageActivity传送
EditText editText = (EditText) findViewById(R.id.editText1);
String text = editText.getText().toString();
intent.putExtra("text", text);//向intent中存放名为EXTRA_MESSAGE的数据
startActivity(intent);
}
2、方法二:后端代码向UI组件动态绑定事件
Main.java:
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
/**后端向UI组件动态绑定事件*/
Button button =(Button)this.findViewById(R.id.button1);
button.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View arg0) {
Intent intent = new Intent(Main.this,Input.class);
startActivity(intent);//定义好的intent对象启动一个Activity
}
});
/**接收调用startActivity方法,其他Activity传递过来的数据*/
EditText editText2=(EditText)this.findViewById(R.id.editText2);
Intent intent = getIntent();
String text = intent.getStringExtra(Input.EXTRA_MESSAGE);
if(text != null){
editText2.setText(text);
}
}
Input.java:
static String EXTRA_MESSAGE="text";
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.input);
/**后端向UI组件动态绑定事件*/
Button button =(Button)this.findViewById(R.id.button1);
button.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View arg0) {
EditText editText =(EditText)findViewById(R.id.editText1);
String text = editText.getText().toString();
/**Main中startActivity跳转过来,向Intent中放数据传递给Main.java*/
// 获取用户在该页面输入的值,传送给另外一个页面
Intent intent = new Intent(Input.this, Main.class);//MainActivity向DisplayMessageActivity传送
intent.putExtra("text", text);//向intent中存放名为EXTRA_MESSAGE的数据
startActivity(intent);
}
});
}
二、startActivity、startActivityForResult区别
Main.java:
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
/**后端向UI组件动态绑定事件*/
Button button =(Button)this.findViewById(R.id.button1);
button.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View arg0) {
Intent intent = new Intent(Main.this,Input.class);
//定义好的intent对象启动一个带返回的Activity(用startActivityForResult返回时不会再调用onCreate方法)
startActivityForResult(intent, 0);
}
});
}
/**接收调用startActivityForResult方法返回的数据*/
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
//requestCode:用来标识请求对象,和启动Activity时用的startActivityForResult(intent, 0)对应,0即requestCode
if(requestCode==0){
if(resultCode == Activity.RESULT_OK){
SharedPreferences preferences = getSharedPreferences("Text", 0);通过Text标签获取SharedPreferences对象
EditText editText2=(EditText)this.findViewById(R.id.editText2);
editText2.setText(preferences.getString("text", null));把传递过来的数据从text对象中取出
}
}
}
Input.java:
static String EXTRA_MESSAGE="text";
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.input);
/**后端向UI组件动态绑定事件*/
Button button =(Button)this.findViewById(R.id.button1);
button.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View arg0) {
EditText editText =(EditText)findViewById(R.id.editText1);
String text = editText.getText().toString();
/**Main中startActivityForResult跳转过来,向SharedPreferences中放数据传递给Main.java*/
//SharedPreferences对象:多个Activity(同一包中)共享数据的方式
//通过一个自定义的Text标签获得和文本相关的那个SharedPreferences对象
SharedPreferences preferences = getSharedPreferences("Text", 0);
SharedPreferences.Editor edites = preferences.edit();
edites.putString("text", text);给它赋予一个"text"对象值为当前文本框中输入的文本
if(edites.commit()){
setResult(Activity.RESULT_OK);设置当前Activity执行结果为RESULT_OK
}
finish();关闭当前的Activity
}
});
}
注意:
UI组件事件属性调用,比较startActivity和startActivityForResult的区别,只是把动态绑定中的相应代码拿出放到一个方法中即可
相关推荐
启动Activity有两种方式:直接使用`startActivity(Intent intent)`启动新的Activity,或者在现有Activity中使用`startActivityForResult(Intent intent, int requestCode)`,后者常用于需要等待结果返回的场景。...
通过`startActivity()`或`startActivityForResult()`可以启动新的Activity,并在`onActivityResult()`中处理返回结果。 了解并熟练掌握Activity生命周期对于优化应用性能至关重要,比如避免在不适当的状态下进行...
- 实现启动新Activity的startActivity()方法,以及使用startActivityForResult()进行回调通信。 6. **联系人权限**: - 申请并处理READ_CONTACTS和WRITE_CONTACTS权限,这是访问系统联系人数据所必需的。 - 学习...
- **启动Activity**: 可以通过`Context.startActivity()`或`Activity.startActivityForResult()`来启动一个新的Activity。 - **启动Service**: 使用`Context.startService()`来启动一个服务,或者使用`Context....
- `startActivity()` 方法调用 `startActivityForResult()`,用于启动新的 Activity。 - `startActivityForResult()` 方法内部通过 `Instrumentation` 类的 `execStartActivity()` 方法实现。 - 最终通过 `...
- 通过`startActivity()`或`startActivityForResult()`启动新的Activity。 - 可以使用Intent传递数据。 #### 四、Intent详解 - **Intent的概念**: - Intent是Android中用于启动Activity、Service或Broadcast ...
startActivity()用于启动一个Intent,而startActivityForResult()可以启动一个Activity并等待返回结果。 此外,Activity的栈管理(任务栈)也是重要的知识点。Android采用“后进先出”(LIFO)的任务栈模型来管理...
- 启动新Activity:`startActivity(Intent intent)`用于启动新的Activity。 - 起始Service:`startService(Intent intent)`用于启动并执行一个Service。 - 绑定Service:`bindService(Intent intent, ...
- 使用`startActivity()`或`startActivityForResult()`启动新的Activity。 - 使用广播Intent与BroadcastReceiver通信。 - 通过`startService()`或`bindService()`与后台Service交互。 **Layout与常用控件** Layout...
- **启动Activity**:通过startActivity()或startActivityForResult()启动新的Activity,通常用于界面跳转。 - **启动Service**:使用startService()启动服务,或bindService()进行服务绑定,实现后台任务执行。 ...
- 系统会调用 `startActivity()` 方法,进一步调用 `startActivityForResult()`。 - `startActivityForResult()` 方法实际上通过 `Instrumentation` 类的 `execStartActivity()` 方法来完成 Activity 的启动。 - ...
- `Context.startActivity()` 和 `Activity.startActivityForResult()` 是启动Activity的主要方法。前者用于启动一个Activity并立即返回,后者则会在启动的Activity执行完毕后返回结果到原Activity。 #### 启动服务...
- `startActivity()`:用于启动一个新的Activity,Intent作为参数传递,用来描述跳转目标。 - `startActivityForResult()`:除了启动Activity外,还能在目标Activity结束后返回结果给调用者,通过`...
每个有界面的应用至少包含一个Activity,可以通过startActivity或startActivityForResult启动其他Activity。Activity有明确的生命周期,包括onCreate、onStart、onResume、onPause、onStop、onDestroy等阶段,需要...
Android面试题是评估开发者技能的关键环节,涵盖了一系列关于Android平台核心概念和技术的问题。以下是一些重要的Android知识点,基于题目中给出的部分内容: 1. **Activity生命周期**: - `onCreate()`:这是...
创建 Intent,指定目标 Activity 和携带的数据,然后调用 `startActivity()` 或 `startActivityForResult()` 方法启动。数据传递可以通过构造 Intent 时添加额外数据(Extra)或者使用 Parcelable 或 Serializable ...
6. **启动Activity**:使用`startActivity(Intent intent)`或`startActivityForResult(Intent intent, int requestCode)`启动Activity。后者用于需要从启动的Activity返回结果的情况。 7. **Intent过滤器**:在...
本次实验的主要目的是让学生通过实际操作深入理解Android应用开发中的组件通信以及后台服务的管理与使用。通过具体的编程任务,学生将能够掌握如何利用Intent进行不同组件间的通信、如何管理和使用Service等关键概念...
如果一个应用想要启动这个Activity,除了需要具备"START_MY_ACTIVITY"权限,还需要创建Intent对象来定义必要的特性,然后调用Context.startActivity()或Activity.startActivityForResult()来启动Activity。...
如果找到匹配的Activity,系统就会调用`startActivity()`或`startActivityForResult()`方法来启动它。 5. **Activity生命周期**: 当Activity被启动时,它的生命周期方法依次被调用,包括`onCreate()`, `onStart()...