`
leiwuluan
  • 浏览: 703597 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类

Android Activity提供服务(被调用Activity 给调用Activity 反回数据)

阅读更多

 

 

网上看了小例子、

现在自己整理一下子:

 

现在想实现一个

Activity1   调用   Activity2   然后 Activity2返回数据给Activity1

 

流程:

1、Activity1 启动Activity2  设置返回码和重写onActivityResult

2、Activity2 完成操作后 返加activity 并传入值

3、Activity1 onActivityResult 里就可以得到Activity2传进来的值。

 

例子:选择电话号码并返回例子。

 

Activity1

layout  layout_activity_return_test.xml

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:gravity="center"
    android:orientation="vertical" >


    <TextView
        android:id="@+id/showTextViewId"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content" />

    <Button
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:onClick="onclick"
        android:text="返回数据" />

</LinearLayout>

 Activity IntentReturnTest.java

package com.main;

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

public class IntentReturnTest extends Activity {
	private TextView text;
	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.layout_activity_return_test);
		
		text = (TextView) findViewById(R.id.showTextViewId);
	}
	
	public void onclick(View view){
		Intent intent = new Intent();
        intent.setClass(IntentReturnTest.this, GetContentResolverActivity.class);
        startActivityForResult(intent, 1);//返回时提供识别 
	}
	
	
	protected void onActivityResult(int requestCode, int resultCode, Intent data) {
		super.onActivityResult(requestCode, resultCode, data);
		switch(requestCode){
		case 1:
			text.setText("---|"+data.getStringExtra("msg")+"---|");
			break;
		}
		
		
		
		
	}
}

 

 

Activity2

layout   layout_get_content_resolver.xml

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:orientation="vertical" >

    <ListView
        android:id="@+id/showContentListView"
        android:layout_height="wrap_content"
        android:layout_width="fill_parent" >
    </ListView>

</LinearLayout>
 

Activity2 类

package com.main;

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

import android.app.Activity;
import android.content.Intent;
import android.database.Cursor;
import android.os.Bundle;
import android.provider.Contacts;
import android.util.Log;
import android.view.View;
import android.widget.AdapterView;
import android.widget.AdapterView.OnItemClickListener;
import android.widget.ArrayAdapter;
import android.widget.ListView;

public class GetContentResolverActivity extends Activity {
	private List<String> items;
	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.layout_get_content_resolver);
		
		ListView listView = (ListView) findViewById(R.id.showContentListView);
		
		items = new ArrayList<String>();
		Cursor cursor = getContentResolver().query(Contacts.Phones.CONTENT_URI,null,null,null,null);
		while(cursor.moveToNext()){
			String name = cursor.getString(cursor.getColumnIndex(Contacts.Phones.NAME));
			String number = cursor.getString(cursor.getColumnIndex(Contacts.Phones.NUMBER));
			items.add(name+":"+number);
		}
		cursor.close();
		
		ArrayAdapter<String> adapter = new ArrayAdapter<String>(this,android.R.layout.simple_list_item_1 ,items);
		listView.setAdapter(adapter);

		listView.setOnItemClickListener(new OnItemClickListener() {
			@Override
			public void onItemClick(AdapterView<?> parent, View view,
					int position, long id) {
				Log.i("test", items.get(position));
				Intent intent = getIntent();
				intent.putExtra("msg", items.get(position));
				GetContentResolverActivity.this.setResult(RESULT_OK,intent);
				GetContentResolverActivity.this.finish();
			}
		});
	}
}
 

 

添加权限

    <!-- 读取联系人权限 -->
    <uses-permission android:name="android.permission.READ_CONTACTS" />

 

 

注册Activity

    <application
        android:icon="@drawable/image_button"
        android:label="@string/app_name" >
        <activity
            android:label="@string/app_name"
            android:name=".IntentReturnTest" >
            <intent-filter >
                <action android:name="android.intent.action.MAIN" />

                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
        <activity android:name=".GetContentResolverActivity" >
        </activity>
    </application>
 

 

好ok 完成 。

附件 apk

 

 

 

 

0
0
分享到:
评论

相关推荐

    android Activity之间数据的回传

    但是当我们需要从被启动的Activity回传数据给启动它的Activity时,就需要使用`startActivityForResult()`了。 #### 三、`startActivityForResult()`详解 `startActivityForResult()`是一种特殊的Activity启动方式...

    android 利用intent调用activity 简明精炼的例子

    本篇将重点讲解如何利用Intent在Android中调用Activity,并进行数据的传递与接收。 首先,让我们了解一下Activity。在Android中,Activity是用户界面的载体,它代表了用户可以看到并与其交互的一个屏幕。通过Intent...

    android activity互相调用 操作数据库

    Activity之间的互相调用是Android应用中常见的场景,而操作数据库则涉及到数据持久化存储。以下是关于这两个知识点的详细说明: 1. **Android Activity互相调用**: - **启动模式**:Android中的Activity有四种...

    android调用另一个activity

    综上所述,"android调用另一个activity"涉及到的核心概念包括Intent的使用、Activity的启动和生命周期管理,以及数据在Activity间的传递。理解并熟练掌握这些知识点对于Android应用开发至关重要。通过实践和学习,...

    Android代码-cordova调用安卓原生activity插件

    //回调函数中的data表示从原生activity传回来的数据,已处理为json对象 alert&#40;data.id "::" data.name&#41;; }); 原生安卓activity接收参数和回传参数简单示例 public class MyActivity extends Activity { ...

    Activity之间的调用

    Activity之间的调用是Android应用中常见的功能,用于实现不同界面间的跳转和数据传递。本主题将深入讲解Activity之间的调用机制以及Intent在其中的作用。 一、Activity的启动模式 Activity的启动模式分为四种:...

    Android PopupWindow与Activity之间的数据传递.zip

    因为ViewModel的生命周期与Activity相关联,所以当Activity被重建(如屏幕旋转)时,PopupWindow中的数据仍能保留。 7. **Parcelable或Serializable**:对于复杂的数据结构,可以使用Parcelable或Serializable将...

    Android 中从activity1跳转到activity2再回到activity所经历的生命周期

    ### Android 中从Activity1跳转到Activity2再回到Activity1所经历的生命周期 在Android开发过程中,理解Activity的生命周期对于管理界面状态、处理用户交互以及响应系统事件至关重要。本文将详细解析从一个Activity...

    Android父Activity获取子Activity返回信息demo

    这样,当子Activity执行完并返回时,父Activity的`onActivityResult()`就会被调用,你可以在这里获取并处理子Activity返回的信息。 总结一下,Android中实现父Activity获取子Activity返回信息的关键步骤如下: 1. ...

    android两个Activity的转换

    5. **Activity栈与回退栈(Back Stack)**:Android系统采用“后进先出”(LIFO)的回退栈管理Activity。每次启动新的Activity,都会压入栈顶,用户按下后退键时,栈顶的Activity被弹出,回到前一个Activity。 6. *...

    Android Activity学习笔记

    例如,当我们从Activity A跳转到Activity B时,Activity A的onPause方法将会被调用,而Activity B的onCreate、onStart、onResume方法将会被调用。 Activity生命周期交互设计思想 在Activity之间跳转时,为什么要先...

    android Activity 详述 demo

    5. `onStop()`: 当Activity不再可见时调用,可能被其他Activity完全覆盖或屏幕关闭。 6. `onDestroy()`: Activity即将被销毁时调用,可能是用户退出或系统资源回收。 二、Activity启动模式 启动模式影响着新...

    Android Activity内嵌Fragment,当Activity recreate时Fragment被添加多次,造成界面重叠

    因为`onCreate()`在Activity的第一次创建和重建时都会调用,而在Activity重建时,`onActivityCreated()`和`onStart()`只会被调用一次。 此外,如果你使用的是静态Fragment(即在布局文件中定义的Fragment),可能...

    android一个应用的acitvity调用另一个应用的activity

    在Android开发中,Activity是应用程序的基本组件,负责与用户交互并展示UI。有时,我们可能需要在一个应用(应用A)中启动另一个应用...通过上述步骤,你可以实现跨应用的Activity调用,为用户提供更丰富的功能和服务。

    android多个activity和一个service通信

    2. **Binder**: Service通过实现IBinder接口,提供一个 Binder 对象给Activity绑定。Activity通过bindService()方法获取到Binder对象,从而可以直接调用Service的方法。这种方式效率较高,但需要编写较多代码,并且...

    实现androidActivity的跳转,数据返回,传数据

    Android提供了一个新的`ActivityResult` API,简化了Activity结果的处理。首先,启动目标Activity时需要注册一个ActivityResultLauncher: ```java ActivityResultLauncher&lt;Intent&gt; launcher = ...

    Android Activity生命周期

    Android Activity 生命周期是指 Activity 从创建到销毁的整个过程,该过程中会经历多个状态变化,每个状态变化都会触发相应的回调方法。理解 Activity 生命周期是 Android 开发的基础。 在 Android 中,Activity ...

    Android-Service与Activity传值

    在某些场景下,我们可能需要在`Service`和`Activity`之间传递数据,比如`Service`执行完一些操作后,将结果传递给`Activity`进行展示。本篇文章将详细讲解如何实现`Service`到`Activity`的数据传递。 1. **创建...

    android 不同activity切换时它们的回调函数调用逻辑的研究

    接着,新Activity的创建过程开始,首先调用`onCreate()`方法,这是Activity生命周期的第一个方法,用于初始化Activity的基本设置,如布局加载、数据绑定等。紧接着,`onStart()`方法会被调用,使Activity变得可见但...

    Android的Activity周期测试

    - onStop():Activity完全不可见时调用,此时Activity被移出屏幕。 3. 销毁过程: - onDestroy():系统决定彻底结束Activity时调用,也可能是开发者主动调用finish()方法。 二、Activity状态转换测试 测试...

Global site tag (gtag.js) - Google Analytics