zoukankan      html  css  js  c++  java
  • Android基础——调用Activity并获得返回值

    图像选择:Main中点击选择图像按钮,启动Head活动用来选择图像,

    然后将被选择图像通过bundle发送给Main,同时附带返回值,方便Main来判断

    Head布局文件

    <?xml version="1.0" encoding="utf-8"?>
    <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
        xmlns:app="http://schemas.android.com/apk/res-auto"
        xmlns:tools="http://schemas.android.com/tools"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        tools:context=".HeadActivity">
    
        <GridView
            android:id="@+id/gridView"
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:layout_marginTop="10dp"
            android:horizontalSpacing="3dp"
            android:verticalSpacing="3dp"
            android:numColumns="2"
            >
        </GridView>
    
    </RelativeLayout>

    Main布局文件

    <?xml version="1.0" encoding="utf-8"?>
    <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
        xmlns:app="http://schemas.android.com/apk/res-auto"
        xmlns:tools="http://schemas.android.com/tools"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        tools:context=".MainActivity"
        android:orientation="vertical"
        >
    
        <ImageView
            android:id="@+id/image"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:src="@drawable/b"
            >
        </ImageView>
        <Button
            android:id="@+id/button"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="更换图片"
            />
    
    
    
    </LinearLayout>

    Head java代码

    package com.example.myactivityiii;
    
    import androidx.appcompat.app.AppCompatActivity;
    
    import android.content.Intent;
    import android.media.Image;
    import android.os.Bundle;
    import android.view.View;
    import android.view.ViewGroup;
    import android.widget.AdapterView;
    import android.widget.BaseAdapter;
    import android.widget.GridView;
    import android.widget.ImageView;
    
    public class HeadActivity extends AppCompatActivity {
    
        private int[] imageId = new int[] {
                R.drawable.a,R.drawable.b,R.drawable.c,R.drawable.d
        };
    
        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_head);
    
            //给图像视图创建适配器
            GridView gridView = (GridView)findViewById(R.id.gridView);
            BaseAdapter adapter = new BaseAdapter() {
                @Override
                public int getCount() {
                    return imageId.length;
                }
                @Override
                public Object getItem(int position) {
                    return null;
                }
                @Override
                public long getItemId(int position) {
                    return 0;
                }
                @Override//返回一个ImageView
                public View getView(int position, View convertView, ViewGroup parent) {
                    ImageView imageView;
                    if(convertView == null){
                        imageView = new ImageView(HeadActivity.this);
                     }
                    else {
                        imageView = (ImageView)convertView;
                    }
                    imageView.setImageResource(imageId[position]);
                    return imageView;
                }
            };
            gridView.setAdapter(adapter);
    
            //选项被点击的监听器
            gridView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
                @Override//获取选择头像的id,保存到数据包中,传回到Main中
                public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
                    Intent intent = getIntent();
                    Bundle bundle = new Bundle();
                    bundle.putInt("imageId",imageId[position]);
                    intent.putExtras(bundle);
                    //设置返回码,要和请求码一样
                    setResult(0x11,intent);
                    finish();
                }
            });
    
        }
    }

    Main java代码

    package com.example.myactivityiii;
    
    import androidx.annotation.Nullable;
    import androidx.appcompat.app.AppCompatActivity;
    
    import android.content.Intent;
    import android.os.Bundle;
    import android.view.View;
    import android.widget.Button;
    import android.widget.ImageView;
    
    /*
    * 使用startActivityForResult,调用一个Activity并返回结果
    * */
    public class MainActivity extends AppCompatActivity {
    
        //判断请求码与返回码是否与之前设置的相同,如果相同则获取传递的数据包
        @Override
        protected void onActivityResult(int requestCode, int resultCode, @Nullable Intent data) {
            super.onActivityResult(requestCode, resultCode, data);
            //1.判断请求码与返回码是否与之前设置的相同
            if(requestCode == 0x11 && resultCode == 0x11){
                //2.获取在Head活动中传递的数据
                Bundle bundle = data.getExtras();
                int imageId = bundle.getInt("imageId");
                //3.在Main中的ImageView中更新
                ImageView imageView = (ImageView)findViewById(R.id.image);
                imageView.setImageResource(imageId);
            }
        }
    
        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_main);
            Button button = (Button)findViewById(R.id.button);
            button.setOnClickListener(new View.OnClickListener(){
                @Override
                public void onClick(View v) {
                    Intent intent = new Intent(
                            MainActivity.this,HeadActivity.class
                    );
                    startActivityForResult(intent,0x11);
                }
            });
    
    
        }
    }
  • 相关阅读:
    网络编程之即时通信程序(聊天室)(一)通信流程简介及通信协议定制
    C#常用加密方法解析
    ASP.NET常用数据绑定控件优劣总结
    使用XPO开发时可以参考使用的架构
    渠道会上的体会
    如何利用第三方SDK开发MSN机器人以及实现语音视频?
    对 XPO 的一些问题的解答
    c++ 参数传递 之引用形参 GIS
    指针与引用的区别 GIS
    c++ const 修饰数组 GIS
  • 原文地址:https://www.cnblogs.com/zsben991126/p/12235203.html
Copyright © 2011-2022 走看看