`
01jiangwei01
  • 浏览: 549644 次
  • 性别: 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课程 chapter2

    在Android课程的第二章中,我们将深入探讨Android开发的基础知识,这对于初学者来说是一次绝佳的学习机会。Android作为全球最广泛使用的移动操作系统,其开发知识的掌握是进入移动应用开发领域的关键步骤。在这个...

    intentData:意图数据 - class7

    "意图数据 - class7"可能指的是一个特定的课程或教程,它深入讲解了如何管理和利用IntentData进行程序设计。这个主题主要关联的是Java语言,因为Android应用主要用Java编写。 Intent在Android系统中起着桥梁的作用...

    Android Activity之间相互调用与传递参数的原理与用法分析

    Intent是一个意图对象,表示应用希望执行的动作,如启动一个新的Activity、启动Service或者发送Broadcast。创建Intent时,你需要指定动作(Action)、数据(Data)、类别(Category)以及附加数据。 创建自定义...

    基于Android平台的校内教师课表查询软件设计.pdf

    基于Android平台的开发,意味着该应用利用了Android SDK中的各种组件和服务,如Intent机制用于在不同活动之间传递数据和启动其他应用功能,以及Android的用户界面框架来构建友好的交互体验。 5. **技术实现**: ...

    caveofprogramming.2activities:Caveofprogramming 如何处理两个activity

    当我们谈论"Caveofprogramming.2activities"时,这显然指的是一个关于如何在Android应用中处理两个Activity的教学资源,可能是一个课程或教程。在这个场景中,我们将深入探讨Android中的Activity管理和它们之间的...

    SenacAndroid

    5. **意图(Intent)**:Intent是Android中的一种消息传递机制,用于启动新的Activity或服务,或在组件间传递数据。在SenacAndroid中,Intent可能用于启动新的学习模块或者执行特定操作。 6. **数据存储**:项目...

    CS175:这是针对SJTU CS175类的

    Intent是一个用来表达应用程序之间意图的对象,可以启动活动(Activity)、服务(Service)或者广播接收器(BroadcastReceiver)。学生需要学习如何创建Intent,以及如何在不同的Activity之间传递数据。 3. **搜索...

    udacity-kotlin:Udacity的程序员Kotlin训练营

    在"udacity-kotlin-main"这个项目中,可能会用到Anko库,它是JetBrains开发的一个Kotlin库,为Android开发提供了许多便利,如简化布局创建、快速创建意图、提供Lambda表达式的DSL等。Anko简化了Android开发,使得...

    类别01

    8. **Anko库**:Anko是JetBrains提供的一个Kotlin库,简化了Android开发,如提供DSL(领域特定语言)来简化XML布局的创建和意图的构造。 9. **Interoperability with Java**:Kotlin与Java完全兼容,可以无缝调用...

Global site tag (gtag.js) - Google Analytics