`
01jiangwei01
  • 浏览: 544468 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

安卓课程四 意图传递数据的种方式 (从一个活动返回数据)

 
阅读更多

activity_main.xml

<?xml version="1.0" encoding="utf-8"?>
<GridView xmlns:android="http://schemas.android.com/apk/res/android" 
    android:id="@+id/gridview"
    android:layout_width="fill_parent" 
    android:layout_height="fill_parent"
    android:verticalSpacing="10dp"
    android:horizontalSpacing="10dp"
    android:columnWidth="90dp"
    android:stretchMode="columnWidth"
    android:gravity="center"
/>

 addnew.xml

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

	     <Button 
        android:id = "@+id/btn_return_withoutparam"
        android:layout_width="50dp"
        android:layout_height="50dp"
        android:text="@string/btn_return_withoutparam"
         android:layout_weight="1"
        />
	     <Button 
        android:id = "@+id/btn_return_withparam"
        android:layout_width="50dp"
        android:layout_height="50dp"
        android:text="@string/btn_return_withparam"
        android:layout_weight="1"
        />
</LinearLayout>

 item_menu.xml

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout 
         xmlns:android="http://schemas.android.com/apk/res/android" 
         android:layout_height="wrap_content" 
         android:paddingBottom="4dip" android:layout_width="fill_parent">
         
         <TextView 
               android:layout_width="wrap_content" 
               android:layout_height="wrap_content" 
               android:layout_centerHorizontal="true" 
               android:id="@+id/ItemText"
               android:textIsSelectable="true"
               >
         </TextView>
</RelativeLayout>

 strings.xml

<?xml version="1.0" encoding="utf-8"?>
<resources>

    <string name="app_name">意图跳转测试1</string>
    <string name="action_settings">Settings</string>
    <string name="hello_world">Hello world!</string>
    <string name="withoutParameter">无参跳转</string>
    <string name="withParameter">带参跳转</string>
    
    <string name="dynWin1">动态视图1</string>
    <string name="dynWin2">动态视图1</string>
    
    <string name="btn_return_withparam">带参返回</string>
    <string name="btn_return_withoutparam">无参返回</string>

</resources>

 Main.java

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

import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import android.widget.AdapterView;
import android.widget.AdapterView.OnItemClickListener;
import android.widget.GridView;
import android.widget.SimpleAdapter;

import com.gxkj.entity.User;

public class Main extends Activity   {
	GridView  gridView;
	final int withoutparametertIntent = 0;
	final int withparametertIntent = 1;
	String [] btnTitles = {"无参跳转1","带参跳转1"};
	
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main); 
        gridView  = (GridView) this.findViewById(R.id.gridview);

        gridView.setNumColumns(btnTitles.length);
      //生成适配器 <====> 动态数组的元素,两者一一对应 
        List<HashMap<String, String>> data = new ArrayList<HashMap<String, String>>();
        for(int i=0;i<btnTitles.length;i++){
        	HashMap<String, String> map = new HashMap<String, String>();
        	 map.put("ItemText", btnTitles[i]);//按序号做ItemText  
        	data.add(map);
        }
       SimpleAdapter simperAdapter = new SimpleAdapter(this, data, R.layout.item_menu, new String[]{"ItemText"}, new int[]{R.id.ItemText});
     //添加并且显示
       gridView.setAdapter(simperAdapter);
     //添加消息处理
       gridView.setOnItemClickListener(new OnItemClickListener() {

		public void onItemClick(AdapterView<?> arg0, View arg1, int arg2,
				long arg3) {
			if(arg2 == 0 ){
				//gridView.setVisibility(View.GONE);
				Intent intent = new Intent(Main.this,AddNew.class);
				
				startActivityForResult(intent,withoutparametertIntent);
			}else if(arg2 == 1 ){
				//gridView.setVisibility(View.GONE);
				Intent intent = new Intent(Main.this,AddNew.class);
				User user = new User();
				user.id = 1;
				user.name = "user_1";
				intent.putExtra("user", user);
			 
				startActivityForResult(intent, withparametertIntent);
			}
			
		}
	});   
    }
    
	@Override
	protected void onActivityResult(int requestCode, int resultCode, Intent data) {
		if(requestCode == withoutparametertIntent){
			//无参请求返回
			String title = "无参请求返回";
			if(resultCode == RESULT_CANCELED){
				title  +="--RESULT_CANCELED";
			}else if(resultCode == RESULT_OK){
				title  +="--RESULT_OK";
			}
			setTitle(title);
		}else if(requestCode == withparametertIntent){
			//有参请求返回
			String title = "有参请求返回";
			
			if(resultCode == RESULT_CANCELED){
				title  +="--RESULT_CANCELED";
			}else if(resultCode == RESULT_OK){
				title  +="--RESULT_OK";
			}else {
				title  +="--"+resultCode;
			}
			 Intent intent = data;
			 if(intent.getExtras()!=null && intent.getExtras().containsKey("user")){
				 User	 user =  (User) intent.getSerializableExtra("user");
	        	 
				 title +="  "+user.toString();
	        }else {
	        	if(intent.getExtras() ==null ){
	        		title +="  intent.getExtras() ==null" ;
	        	}else if (intent.getExtras().containsKey("user") ==false) {
	        		title +="  no user key";
	        	}
	        	
	        }
			setTitle(title);
		}
		
	} 
}

 User.java

import java.io.Serializable;

public class User implements Serializable {

	/**
	 * 
	 */
	private static final long serialVersionUID = 4587371759303977455L;
	
	public int id;
	public String name;

	@Override
	public String toString() {
		return "User [id=" + id + ", name=" + name + "]";
	} 
}

 AddNew.java

import com.gxkj.entity.User;

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

public class AddNew extends Activity  implements OnClickListener{

	private Button btn_return_withparam;
	private Button btn_return_withoutparam;
	User user =null;
	Intent intent = null;
	@Override
	protected void onCreate(Bundle savedInstanceState) {
		 
		super.onCreate(savedInstanceState);
        setContentView(R.layout.addnew);
        
        btn_return_withparam = (Button) this.findViewById(R.id.btn_return_withparam); 
        btn_return_withoutparam = (Button) this.findViewById(R.id.btn_return_withoutparam); 
        
        btn_return_withparam.setOnClickListener(this);
        btn_return_withoutparam.setOnClickListener(this);
        
         intent = getIntent();
        if(intent.getExtras()!=null && intent.getExtras().containsKey("user")){
        	 user =  (User) intent.getSerializableExtra("user");
        	setTitle("有参请求 "+user.toString());
        	user.name=user.name +"  返回";
        }else {
        	setTitle("无参请求");
        	
        };
        
	}

	public void onClick(View v) {
		 switch(v.getId()){
		 case R.id.btn_return_withoutparam: 
			 //活动结束
			 finish();
			 break;
		 case R.id.btn_return_withparam :
			 
			 intent.putExtra("user", user);
			 
			 setResult(3, intent);
			 finish();
			 break;
		 }
	} 
}

 

分享到:
评论

相关推荐

    android使用意图传递数据

    这是一个ppt文档,在里面详细的帮我们介绍了在Activity之间传递数据,通过全局变量传递数据。

    Android学习笔记(十二)——使用意图传递数据的几种方式

    本篇笔记将详细探讨Android中使用意图传递数据的几种方式,帮助开发者深入理解这一核心概念。 1. **基本数据类型传递** 对于简单的数据类型,如字符串(String)、整型(int)、浮点型(float)等,可以直接通过Intent的...

    Android开发中Intent的四种数据传递方式

    4种最常用的Intent传递方式,这4种方式如下: 1、通过Intent传递数据 2、通过静态变量传递数据 3、通过剪切板传递数据 4、通过全局变量传递数据

    安卓中数据传递

    在安卓开发中,数据传递是应用程序中不同页面之间交互的关键环节。通常,我们有多种方法来实现在Android页面间的数据传递,下面将详细讲解这些方法。 首先,最常见的数据传递方式是通过Intent对象。Intent在Android...

    利用隐式意图实现两个apk之间的数据传递

    当我们需要在两个不同的apk之间进行数据交换时,隐式意图(Implicit Intent)提供了一种灵活的方式。下面我们将深入探讨如何利用隐式意图实现两个apk之间的数据传递。 隐式意图与显式意图的主要区别在于,显式意图...

    Android Intent传递数据大小限制详解

    前言 ...这就牵涉到一个问题:Intent 传递数据大小限制。 Intent到底能够携带多少数据呢? 使用Intent传送数据时,可能会出现异常 在Intent中传入一个Parcelable对象;例如传入一个bitmap对象。 代

    Android 从Activity中返回数据

    在实际的应用中,我们不仅仅要向Activity传递数据,而且要从Activity中返回数据,虽然返回数据和传递数据类似,也可以采用前面4种方法,但是一般建议采用Intent对象的方式来返回数据,使用这种方式返回数据,需要...

    android输入数据点击按钮就可以传递到另外一个页面显示

    Android提供了多种数据传递方式,如Intent、Bundle、SharedPreferences等。在这个场景中,最常用的是Intent。创建一个新的Intent,将获取到的用户输入数据通过putExtra方法添加到Intent的extras中。例如,如果你要...

    Android学习笔记(十一)——从意图返回结果

    本篇笔记主要聚焦于如何通过意图从一个活动返回结果到另一个活动,这对于实现应用中的功能交互至关重要。 首先,我们来理解一下Android中的意图(Intent)。意图是一个对象,它封装了执行操作的信息,如启动一个新的...

    Android通过Intent传递数据

    "Android通过Intent传递数据"这一主题,涵盖了Intent的基本使用和数据传递的方式。 Intent分为显式Intent和隐式Intent。显式Intent明确指定要启动的目标组件,而隐式Intent则不指定具体接收者,而是根据Intent的...

    实验5 数据传递与数据回传1

    数据传递是指在不同的 Activity 之间传递数据,而数据回传是指从一个 Activity 返回到前一个 Activity,并将数据带回去。本实验的目的是掌握 Intent 数据传递的方法,并了解如何在 Activity 之间传递数据。 一、...

    安卓开发-Activity间数据传递和回传

    1. **创建Intent并传递数据**:在A中,通过创建一个指向B的`Intent`对象,并使用`putExtra()`方法将需要传递的数据添加到该`Intent`中。 ```java Intent intent = new Intent(this, B.class); intent.putExtra(...

    Androidstudio实现页面跳转和传递参数

    Intent是一种用来表达应用程序之间意图的类,可以理解为一个消息对象,它告诉系统你要执行什么操作。在实现页面跳转时,我们通常创建一个新的Intent实例,并指定目标Activity(即要跳转到的页面)。以下是一个简单的...

    JS调用Android方法,向Android方法传递json数据

    WebView是Android系统提供的一种组件,它能够加载并显示网页内容,就像是一个内置的浏览器。通过WebView,开发者可以在原生Android应用中嵌入HTML、CSS和JavaScript代码,从而构建混合式应用。 当需要在JavaScript...

    在不同Activity之间传递数据的四种常用方法

    在Android中传递数据的方法非常多,本次介绍4中比较常用的数据传递方法: 1.通过Intent传递数据 2.通过静态变量(static)传递数据 3.通过剪贴板(Clipboard)传递数据 4.通过全局对象传递数据 在...

    Android学习笔记(十)——使用意图链接活动

    在Android应用开发中,意图(Intent)是连接各个组件的核心机制,它用于启动新的活动(Activity)、服务(Service)或广播接收器(BroadcastReceiver),传递数据和指令。本篇笔记将深入探讨如何使用意图来链接不同的活动,...

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

    2. **接口回调**:这是一种常用的方式,通过定义一个接口,让Activity实现该接口,然后在PopupWindow中调用接口方法来传递数据。当PopupWindow需要向Activity传递数据时,只需调用已实现的接口方法即可。这样做的...

    Android Studio 实训操作题(六)传递数据练习.docx

    我们掌握了显示 Intent 和隐式 Intent 的用法,掌握了向下一个活动传递数据的方法,掌握了返回数据给上一个活动的方法。 五、实训过程遇到的问题及解决方法 在本实训项目中,我们遇到了隐式跳转出现错误的问题。...

    Activity传递数据到另一个Activity并显示

    在数据传递中,`Intent`主要用来创建一个从一个`Activity`到另一个`Activity`的通道。 ```java // 创建一个新的Intent Intent intent = new Intent(currentActivity, TargetActivity.class); ``` ### 2. 通过`...

Global site tag (gtag.js) - Google Analytics