当前位置:  编程技术>移动开发

android 获取上一个activity返回值的方法

    来源: 互联网  发布时间:2014-10-20

    本文导语:  activity A和B A 获取数据的activity  B返回数据的activity 点击A上的按钮,在A的textview上显示B中的联系人列表选中的数据 用到baseadapter 1:在主配置文件中声明Bactivity 和 注册通讯录的读写权限 [html] 代码如下:     lt;!-- .表示上面 manifes...

activity A和B

A 获取数据的activity  B返回数据的activity

点击A上的按钮,在A的textview上显示B中的联系人列表选中的数据 用到baseadapter

1:在主配置文件中声明Bactivity 和 注册通讯录的读写权限

[html]

代码如下:


 
 

lt;!-- .表示上面 manifest 标签中 package属性的值 -->
    
    

2.在A的布局文件中声明2个button和2个edittext 并给button注册点击事件

[html]

代码如下:



   

   

   

   



3:在B的activity布局文件中添加一个listview

[html]

代码如下:



   
   



4:在A中获取textView,和编写2个按钮的单击事件,应为是要回去上一个activity返回的值,所以再跳转的时候要用startActivityForResult()方法来激活需要返回数据的activity,并重写onActivityResult()方法接收返回的数据

[java]

代码如下:

package com.example.getresultdata;

import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.view.Menu;
import android.view.View;
import android.widget.TextView;

public class MainActivity extends Activity {
    private TextView textView;
    private TextView textView2;

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
        textView = (TextView) findViewById(R.id.textView);
        textView2 = (TextView) findViewById(R.id.textView2);
    }

    /**
     * 第一个按钮的点击事件
     *
     * @param view
     */
    public void click(View view) {
        Intent intent = new Intent(this, DemoActivity.class);
        // startActivity(intent);
        startActivityForResult(intent, 1);// 请求码
                                            // 用于区分请求的数据,如果只有一个请求(按钮),这个code可以为0,可以不考虑他的值
    }

    /**
     * 第二个按钮的点击事件
     *
     * @param view
     */
    public void click2(View view) {
        Intent intent = new Intent(this, DemoActivity.class);
        // startActivity(intent);
        startActivityForResult(intent, 2);// 请求码
    }

    @Override
    /**
     * 当跳转的activity(被激活的activity)使用完毕,销毁的时候调用该方法
     */
    protected void onActivityResult(int requestCode, int resultCode, Intent data) {
        // TODO Auto-generated method stub
        super.onActivityResult(requestCode, resultCode, data);
        if (data != null) {
            String name = data.getStringExtra("name");
            if (requestCode == 1) {// 因为有2个按钮,所以要区分是触发了那个按钮的单击事件,然后把返回的数据放到对应的EditText中
                textView.setText(name);
            } else if (requestCode == 2) {
                textView2.setText(name);
            }
        }

    }

}

5:在B中设置B的布局文件,并回去他的listview,使用baseadapter给listview添加联系人数据

[java]

代码如下:

package com.example.getresultdata;

import java.util.ArrayList;
import java.util.List;

import android.app.Activity;
import android.content.ContentResolver;
import android.content.Intent;
import android.database.Cursor;
import android.graphics.Color;
import android.net.Uri;
import android.os.Bundle;
import android.provider.ContactsContract;
import android.view.Menu;
import android.view.View;
import android.view.ViewGroup;
import android.widget.AdapterView;
import android.widget.AdapterView.OnItemClickListener;
import android.widget.BaseAdapter;
import android.widget.ListView;
import android.widget.TextView;

public class DemoActivity extends Activity {
    private ListView listView;
    private List data;

    @Override  www.
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.demo);
        listView = (ListView) findViewById(R.id.lv);// 初始化控件
        data = getAllContacts();// 获取所有的联系人姓名
        listView.setAdapter(new MyAdapter());
        listView.setOnItemClickListener(new OnItemClickListener() {

            @Override
            public void onItemClick(AdapterView parent, View view, int position, long id) {
                TextView textView = (TextView) view;
                String name = textView.getText().toString();
                Intent intent = new Intent();
                intent.putExtra("name", name);// 放入返回值
                setResult(0, intent);// 放入回传的值,并添加一个Code,方便区分返回的数据
                finish();// 结束当前的activity,等于点击返回按钮
            }

        });
    }

    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        getMenuInflater().inflate(R.menu.main, menu);
        return true;
    }

    /**
     * 内部类,为listview添加数据,构成联系人列表
     *
     * @author w
     *
     */
    public class MyAdapter extends BaseAdapter {

        @Override
        public int getCount() {
            // TODO Auto-generated method stub
            return data.size();// 返回listview的总长度
        }

        @Override
        public Object getItem(int position) {
            // TODO Auto-generated method stub
            return position;// 返回当前列表的位置
        }

        @Override
        public long getItemId(int position) {
            // TODO Auto-generated method stub
            return position;// 返回当前列表位置
        }

        @Override
        public View getView(int position, View convertView, ViewGroup parent) {
            TextView tv = new TextView(DemoActivity.this);
            tv.setTextSize(25);// 设置显示文本的大小,
            tv.setTextColor(Color.RED);// 设置显示文本的颜色
            tv.setText(data.get(position));// 在对应的位置设置联系人数据
            return tv;
        }

    }

    /**
     * 获取所有联系人的姓名
     *
     * @return
     */
    private List getAllContacts() {
        List list = new ArrayList();
        // 或者uri==ContactsContract.Contacts.CONTENT_URI
        Uri uri = Uri.parse("content://com.android.contacts/contacts");
        ContentResolver resolver = this.getContentResolver();
        Cursor cursor = resolver.query(uri, null, null, null, null);
        while (cursor.moveToNext()) {
            String name = cursor.getString(cursor.getColumnIndex(ContactsContract.Contacts.DISPLAY_NAME));
            list.add(name);
        }
        cursor.close();
        return list;
    }
}

注意 在A中的startActivityForResult中的requestCode 和B中的setResult中的resultCode 两者的code不是对应的,A中的code用区分请求空间,B中的Code是用以区分返回值

    
 
 

您可能感兴趣的文章:

  • android游戏载入的activity跳转到游戏主菜单的activity具体实现
  • android activity设置无标题实现全屏
  • Android Activity切换(跳转)时出现黑屏的解决方法 分享
  • Android实现退出时关闭所有Activity的方法
  • Android显式启动与隐式启动Activity的区别介绍
  • android弹出activity设置大小的方法
  • android不同activity之间共享数据解决方法
  • android横竖屏切换时候Activity的生命周期
  • Android Activity 完全结束并退出程序的实例
  • Android Activity之间传递图片(Bitmap)的方法
  • android横竖屏切换不重启activity解决方案
  • Android实现Activity界面切换添加动画特效的方法
  • android的activity跳转到另一个activity
  • android Activity相对布局的使用方法
  • android开发之为activity增加左右手势识别示例
  • Android开发 旋转屏幕导致Activity重建解决方法
  • Android中通过view方式获取当前Activity的屏幕截图实现方法
  • Android的Activity跳转动画各种效果整理
  • Android 不同Activity间数据的传递 Bundle对象的应用
  • Android提高之Activity+Intent用法示例
  • Android获取本机电话号码的简单方法
  • android获取手机唯一标识的方法
  • android 如何获取MCC/MNC控制小区广播的开启
  • android当前apn的状态以及获取方法
  • Android手机获取root权限并实现关机重启功能的方法
  • Android获取手机SIM卡运营商信息的方法
  • 用Android Location获取当前地理位置的方法
  • Android取消EditText自动获取焦点默认行为
  • Android获取屏幕方向及键盘状态的小例子
  • android开发中获取手机分辨率大小的方法
  • android获取当前手机号示例程序
  •  
    本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
    本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐
  • Android开发笔记之:返回键的复写onBackPressed()介绍
  • Android双击返回键退出程序的实现方法
  • Android 再按一次返回键退出程序实现思路
  • Android打开GPS导航并获取位置信息返回null解决方案
  • android使用url connection示例(get和post数据获取返回数据)
  • 申请Android Map 的API Key(v2)的最新申请方式(SHA1密钥)
  • Android瀑布流实例 android_waterfall
  • Android开发需要的几点注意事项总结
  • Android系统自带样式 (android:theme)
  • android 4.0 托管进程介绍及优先级和回收机制
  • Android网络共享软件 Android Wifi Tether
  • Android访问与手机通讯相关类的介绍
  • Android 图标库 Android GraphView
  • Android及andriod无线网络Wifi开发的几点注意事项
  • 轻量级Android开发工具 Android Tools
  • Android 2.3 下StrictMode介绍
  • Android 开发环境 Android Studio
  • IDEA的Android开发插件 idea-android
  • Android手机事件提醒 Android Notifier
  • XBMC的Android客户端 android-xbmcremote
  • Android小游戏 Android Shapes
  • Android电池监控 Android Battery Dog
  • android开发:“android:WindowTitle”没有对应项no resource
  • Android 上类似IOS 的开关控件。 Android ToggleButton
  • Android 将 android view 的位置设为右下角的解决方法
  • Android 2D游戏引擎 Android Angle


  • 站内导航:


    特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

    ©2012-2021,,E-mail:www_#163.com(请将#改为@)

    浙ICP备11055608号-3