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

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;
		 }
	} 
}

猜你喜欢

转载自01jiangwei01.iteye.com/blog/1851512
今日推荐