首页 > 其他分享 >Android开发--事件绑定及startActivity、startActivityForResult区别

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

时间:2023-05-05 23:09:03浏览次数:34  
标签:Main startActivity -- text void intent startActivityForResult onCreate Intent


 

 

一、绑定事件的方法:

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

标签:Main,startActivity,--,text,void,intent,startActivityForResult,onCreate,Intent
From: https://blog.51cto.com/iwtxokhtd/6247998

相关文章

  • 16QAM调制解调系统相位盲估计matlab仿真
    1.算法仿真效果matlab2022a仿真结果如下:2.算法涉及理论知识概要16QAM是指包含16种符号的QAM调制方式。16QAM是用两路独立的正交4ASK信号叠加而成,4ASK是用多电平信号去键控载波而得到的信号。它是2ASK调制的推广,和2ASK相比,这种调制的优点在于信息传输速率高。正交幅度......
  • Android开发--架构详解
    Android体系架构详解:http://www.ibm.com/developerworks/cn/opensource/os-cn-android-build/#ibm-pcon    src文件夹是项目的所有包及源文件(.java)(与一般的Java项目一样)分析HelloAndroid项目的主程序文件HelloAndroid.java,如代码清单3-8所示。代码清单3-8HelloAndroid.java......
  • 网页抓取--1(原网页+Javascript返回数据)
     有时候由于种种原因,我们需要采集某个网站的数据,但由于不同网站对数据的显示方式略有不同!本文就用Java给大家演示如何抓取网站的数据:(1)抓取原网页数据;(2)抓取网页Javascript返回的数据。一、抓取原网页。这个例子我们准备从http://ip.chinaz.com上抓取ip查询的结果:第一步:打开这个网页......
  • 前端技能汇总
    项目起源前端知识结构图(@jayli)。前端开发知识结构前端工程师浏览器IE6/7/8/9FirefoxChrome/Safari/Opera编程语言JavaScript/Node.jsJavaScript语言精粹切页面HTMLCSSPhotoShop/Paint.net开发工具IDEVIM/SublimeText2Notepad++/EditPlus调......
  • 大型网站架构演变和知识体系
    之前也有一些介绍大型网站架构演变的文章,例如LiveJournal的、ebay的,都是非常值得参考的,不过感觉他们讲的更多的是每次演变的结果,而没有很详细的讲为什么需要做这样的演变,再加上近来感觉有不少同学都很难明白为什么一个网站需要那么复杂的技术,于是有了写这篇文章的想法。在这篇文章......
  • 微信公众平台开发——如何保证access_token长期有效?
    【编者按】由CSDN和《程序员》杂志联合主办的 2014年微信开发者大会将于8月23日在北京举行。内容涵盖企业服务号开发和高级应用、企业号开发、业务系统对接、高级接口运用、微信支付、智能客服与LBS、HTML5社交应用、微信电商、微信广告自助平台等多方面。作为一线微信开发商云......
  • Java中快如闪电的线程间通讯
    这个故事源自一个很简单的想法:创建一个对开发人员友好的、简单轻量的线程间通讯框架,完全不用锁、同步器、信号量、等待和通知,在Java里开发一个轻量、无锁的线程内通讯框架;并且也没有队列、消息、事件或任何其他并发专用的术语或工具。只用普通的老式Java接口实现POJO的通讯。它可能......
  • 5个强大的Java分布式缓存框架推荐
    本文主要是分享了5个常用的Java分布式缓存框架,这些缓存框架支持多台服务器的缓存读写功能,可以让你的缓存系统更容易扩展。1、EhcacheEhcache是一个Java实现的开源分布式缓存框架,EhCache可以有效地减轻数据库的负载,可以让数据保存在不同服务器的内存中,在需要数据的时候可以快速存取......
  • JDK----下载、作用、安装、配置
      官网JDK下载地址http://www.oracle.com/technetwork/java/javase/downloads/index.html   JDK介绍:java开发、调试需要安装JDK(包括javac编译、JRE等)只运行java程序只需安装JRE(包括javaAPI类库和JVM虚拟机)JRE  JDK环境变量配置及作用:安装完JDK后在cmd中输入java报错“不是内......
  • 错误信息----输出方法
    错误信息输出方式:一:JDK方式控制台输出try{       可能出错的代码}catch(Exceptione){e.printStackTrace();在控制台打印出异常种类,错误信息和出错位置等} 二:Log4j日志输出:导入org.apache.log4j.Logger;及相关包方法1:在需要使用log4j的地方获取Log实例(写......