`
2277259257
  • 浏览: 520517 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

Android开发--事件绑定及startActivity、startActivityForResult区别

 
阅读更多

 

 

一、绑定事件的方法:

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的区别,只是把动态绑定中的相应代码拿出放到一个方法中即可

分享到:
评论

相关推荐

    Android应用开发-系统Activity的调用.pptx

    启动Activity有两种方式:直接使用`startActivity(Intent intent)`启动新的Activity,或者在现有Activity中使用`startActivityForResult(Intent intent, int requestCode)`,后者常用于需要等待结果返回的场景。...

    Android Activity生命周期Demo源码.rar

    通过`startActivity()`或`startActivityForResult()`可以启动新的Activity,并在`onActivityResult()`中处理返回结果。 了解并熟练掌握Activity生命周期对于优化应用性能至关重要,比如避免在不适当的状态下进行...

    [Android项目视频教程]通讯录的开发_完整代码.zip

    - 实现启动新Activity的startActivity()方法,以及使用startActivityForResult()进行回调通信。 6. **联系人权限**: - 申请并处理READ_CONTACTS和WRITE_CONTACTS权限,这是访问系统联系人数据所必需的。 - 学习...

    Android Activity和Intent机制学习笔记

    - **启动Activity**: 可以通过`Context.startActivity()`或`Activity.startActivityForResult()`来启动一个新的Activity。 - **启动Service**: 使用`Context.startService()`来启动一个服务,或者使用`Context....

    2018 Android面试题大全

    - `startActivity()` 方法调用 `startActivityForResult()`,用于启动新的 Activity。 - `startActivityForResult()` 方法内部通过 `Instrumentation` 类的 `execStartActivity()` 方法实现。 - 最终通过 `...

    Android框架与应用开发介绍.pdf

    - 通过`startActivity()`或`startActivityForResult()`启动新的Activity。 - 可以使用Intent传递数据。 #### 四、Intent详解 - **Intent的概念**: - Intent是Android中用于启动Activity、Service或Broadcast ...

    ch10_android开发_

    startActivity()用于启动一个Intent,而startActivityForResult()可以启动一个Activity并等待返回结果。 此外,Activity的栈管理(任务栈)也是重要的知识点。Android采用“后进先出”(LIFO)的任务栈模型来管理...

    Android经典设计源码-Intent_ComponentSample.rar

    - 启动新Activity:`startActivity(Intent intent)`用于启动新的Activity。 - 起始Service:`startService(Intent intent)`用于启动并执行一个Service。 - 绑定Service:`bindService(Intent intent, ...

    Android应用开发培训课件

    - 使用`startActivity()`或`startActivityForResult()`启动新的Activity。 - 使用广播Intent与BroadcastReceiver通信。 - 通过`startService()`或`bindService()`与后台Service交互。 **Layout与常用控件** Layout...

    Android学习总结-Intent详解.doc

    - **启动Activity**:通过startActivity()或startActivityForResult()启动新的Activity,通常用于界面跳转。 - **启动Service**:使用startService()启动服务,或bindService()进行服务绑定,实现后台任务执行。 ...

    Android面试中高级题.docx

    - 系统会调用 `startActivity()` 方法,进一步调用 `startActivityForResult()`。 - `startActivityForResult()` 方法实际上通过 `Instrumentation` 类的 `execStartActivity()` 方法来完成 Activity 的启动。 - ...

    android各组件详解- Intent.

    - `Context.startActivity()` 和 `Activity.startActivityForResult()` 是启动Activity的主要方法。前者用于启动一个Activity并立即返回,后者则会在启动的Activity执行完毕后返回结果到原Activity。 #### 启动服务...

    实验四-Android基本组件交互实验.doc

    - `startActivity()`:用于启动一个新的Activity,Intent作为参数传递,用来描述跳转目标。 - `startActivityForResult()`:除了启动Activity外,还能在目标Activity结束后返回结果给调用者,通过`...

    android框架与应用开发介绍.ppt

    每个有界面的应用至少包含一个Activity,可以通过startActivity或startActivityForResult启动其他Activity。Activity有明确的生命周期,包括onCreate、onStart、onResume、onPause、onStop、onDestroy等阶段,需要...

    自己整理Android面试题

    Android面试题是评估开发者技能的关键环节,涵盖了一系列关于Android平台核心概念和技术的问题。以下是一些重要的Android知识点,基于题目中给出的部分内容: 1. **Activity生命周期**: - `onCreate()`:这是...

    7.四大组件之Activity.pptx

    创建 Intent,指定目标 Activity 和携带的数据,然后调用 `startActivity()` 或 `startActivityForResult()` 方法启动。数据传递可以通过构造 Intent 时添加额外数据(Extra)或者使用 Parcelable 或 Serializable ...

    Android Intent切换-IT计算机-毕业设计.zip

    6. **启动Activity**:使用`startActivity(Intent intent)`或`startActivityForResult(Intent intent, int requestCode)`启动Activity。后者用于需要从启动的Activity返回结果的情况。 7. **Intent过滤器**:在...

    Android编程基础-实验报告三.doc

    本次实验的主要目的是让学生通过实际操作深入理解Android应用开发中的组件通信以及后台服务的管理与使用。通过具体的编程任务,学生将能够掌握如何利用Intent进行不同组件间的通信、如何管理和使用Service等关键概念...

    Android软件安全开发研究.pdf

    如果一个应用想要启动这个Activity,除了需要具备"START_MY_ACTIVITY"权限,还需要创建Intent对象来定义必要的特性,然后调用Context.startActivity()或Activity.startActivityForResult()来启动Activity。...

    Android应用程序的Activity启动过程简要介绍和学习计划.doc

    如果找到匹配的Activity,系统就会调用`startActivity()`或`startActivityForResult()`方法来启动它。 5. **Activity生命周期**: 当Activity被启动时,它的生命周期方法依次被调用,包括`onCreate()`, `onStart()...

Global site tag (gtag.js) - Google Analytics