一、绑定事件的方法:
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的区别,只是把动态绑定中的相应代码拿出放到一个方法中即可
相关推荐
一种 startActivityForResult 更简单流程
基于RxPermissions框架思想,在使用startActivityForResult可以不重写onActivityResult回调
Android之Intent通过startActivityForResult方法启动新Activity
An Rx wrapper for receiving results from startActivityForResult() as an Observable. Download To launch from an Activity : compile 'com.natewickstrom.rxactivityresult:rxactivityresult:0.1.0-rc3' To ...
1.启动Activity 将Intent对象传递给startActivity()方法或startActivityForResult()方法以启动一个Activity,该Intent对象包含了要启动的Activity的信息及其他必要的数据。 2.启动Service将Intent对象传递给start...
DateTimeRangePicker A date time range picker for android Usage Firstly, grab latest release of the library via JitPack. And note that, it utilizes Joda-...activity.startActivityForResult(intent, RQ
1、创建一个自己的Activity 2、启动activity-显示启动和隐式启动: 3、隐式启动自己的activity 4、获取隐启动传递过来的data数据 5、显示启动传递数据 ...7、开启activity获取返回值-startActivityForResult:
startActivityForResult( Intent(this, IMGEditActivity::class.java) .putExtra(IMGEditActivity.EXTRA_IMAGE_URI, image.uri) .putExtra(IMGEditActivity.EXTRA_IMAGE_SAVE_PATH, saveToPath), REQ_IMAGE_...
2.Start Activity For Result case R.id.btn_pick_image: Intent intent1 = new Intent(this, ImagePickActivity.class); intent1.putExtra(IS_NEED_CAMERA, true); intent1.putExtra(Constant.MAX_NUMBER, 9); ...
关于startActivity被大家忽略的 Fragment中的startActivityForResult方法
StartActivityForResultHelper 一个轻巧的,用于解耦startActivityForResult方法的库
startActivityForResult过时.md
Then you have to startActivityForResult if you want to know if icon pack was correctly applied, or startActivity if not. If package name is not valid nor apex based, or if user is not allowed to set ...
Activity返回参数和传值区别:传参调用startActivity(intent)执行跳转,返回参数用startActivityForResult(intent, 1)方法,还需从写onActivityResult()方法,它是负责初始化回传参数的方法。
NULL 博文链接:https://duduli.iteye.com/blog/1422558
一款支持多选的图片选择器,支持Android2.0 使用(详见app目录) 配置AndroidManifest.xml 1、添加权限: <!--SD卡读写权限--> 2、声明GalleryActivity: <!--***改成应用的包名--> 调起...
android框架与应用开发介绍 通过view管理UI 每一个有用户界面的应用至少包含一个activity 一个应用可以有多个activity,其中一个作为main ...Activity通过startActivity或startActivityForResult启动另外的activity
startActivity(intent); Intent intent = new Intent(android.provider.Settings.ACTION_APPLICATION_SETTINGS);//管理应用程序界面 context.startActivity(intent); 或者用以下方法(3.0以前的版本可以用此方法) ...
使用startActivityForResult回传数据
It actullay call the startActivityForResult() in a Headless-Fragment that attaching to your Activity(/Fragment). And publish the activity results in the Headless-Fragment's onActivityResult(). ...