Android 에서 다른 Activity 를 호출 하고 결 과 를 되 돌려 줍 니 다(프로필 사진 기능 을 선택 한 경우)

장면
Android 에서 단 추 를 누 르 면 다른 Activity 와 Activity 사이 의 값 을 시작 합 니 다.
https://www.jb51.net/article/178218.htm
위 에서 Activity 와 전송 값 을 시작 한 후 Acitvity 의 반환 값 을 어떻게 가 져 옵 니까?다음 예제 에 서 는 프로필 사진 선택 단 추 를 누 르 고 프로필 사진 으로 이동 하여 Activity 를 표시 하고 선택 한 그림 의 색인 을 되 돌려 MainActivity 에서 가 져 온 후 프로필 사진 을 설정 합 니 다.
효과.

주:
이루어지다
먼저 홈 페이지 의 MainActivity 레이아웃 입 니 다.프로필 사진 선택 단추 와 ImageView 를 추가 하여 프로필 사진 을 표시 합 니 다.

<?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"
android:orientation="vertical"
tools:context=".MainActivity">
<ImageView
 android:id="@+id/image"
 android:layout_width="wrap_content"
 android:layout_height="wrap_content"/>
<Button
 android:id="@+id/button"
 android:text="    "
 android:layout_width="wrap_content"
 android:layout_height="wrap_content"/>
</LinearLayout>
그리고 MainActivity 의 OnCreate 방법 에서 startActivity ForResult 를 사용 하면 다른 Activity 를 시작 하고 결 과 를 되 돌 릴 수 있 습 니 다.
요청 코드 를 설정 하려 면 여 기 는 200 입 니 다.
       

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,200);
   }
  });
그리고 두 번 째 Activity 로 넘 어가 서 프로필 사진 을 선택 하 세 요.먼저 레이아웃 파일 을 설정 하고 선택 할 프로필 사진 을 표시 하기 위해 GridView 를 추가 합 니 다.
activity_head.xml

<?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"
 android:orientation="vertical"
 tools:context=".HeadActivity">
 <GridView
  android:id="@+id/gridView"
  android:numColumns="4"
  android:layout_width="wrap_content"
  android:layout_height="wrap_content"/>
</LinearLayout>
그리고 Activity 에 와 서 어댑터 로 사진 원본 을 설정 합 니 다.
먼저 그림 배열 을 설명 합 니 다.

 private int[] imageId = new int[]{
  R.drawable.img1,R.drawable.img2
 };
여기에 drawable 아래 두 장의 프로필 사진 을 인용 했다.
그리고 어댑터 를 사용 하여 사진 에 데이터 원본 을 설정 합 니 다.

 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
   public View getView(int position, View convertView, ViewGroup parent) {
    ImageView imageView;
    if(convertView ==null)
    {
     imageView = new ImageView(HeadActivity.this);
     imageView.setAdjustViewBounds(true);
     imageView.setMaxWidth(158);
     imageView.setMaxHeight(150);
     imageView.setPadding(5, 5, 5, 5);
    }else
    {
     imageView = (ImageView) convertView;
    }
    imageView.setImageResource(imageId[position]);
    return imageView;
   }
  };
  gridView.setAdapter(adapter);
그리고 gridView 옵션 을 누 르 면 이벤트 모니터 에서 선택 한 사진 의 색인 을 가 져 오고 Bundle 대상 의 putInt 와 intent 대상 의 putExtras 를 통 해 데 이 터 를 되 돌려 줍 니 다.그리고 setResult(200,intent)를 호출 합 니 다.결 과 를 되 돌려 주 고 요청 결과 코드 도 200 으로 설정 합 니 다.
전체 HeadActivity.java

package com.badao.selectimage;
import androidx.appcompat.app.AppCompatActivity;
import android.content.Intent;
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.img1,R.drawable.img2
 };
 @Override
 protected void onCreate(Bundle savedInstanceState) {  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
   public View getView(int position, View convertView, ViewGroup parent) {
    ImageView imageView;
    if(convertView ==null)
    {
     imageView = new ImageView(HeadActivity.this);
     imageView.setAdjustViewBounds(true);
     imageView.setMaxWidth(158);
     imageView.setMaxHeight(150);
     imageView.setPadding(5, 5, 5, 5);
    }else
    {
     imageView = (ImageView) convertView;
    }
    imageView.setImageResource(imageId[position]);
    return imageView;
   }
  };
  gridView.setAdapter(adapter);
  super.onCreate(savedInstanceState);
  setContentView(R.layout.activity_head);
  gridView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
   @Override
   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(200,intent);
    finish();
   }
  });
 }
}
그리고 메 인 액 티 비 티 로 돌아 가 돌아 온 결 과 를 어떻게 받 아들 일 것 인가?
ctrl+O 재 작성 방법 onActivity Result,요청 코드 와 결과 코드 가 모두 200 이면 먼저 통과 합 니 다.Bundle bundle  = data.getExtras();Bundle 대상 가 져 오기.
그리고 통과.int imageId = bundle.getInt("imageId");되 돌아 오 는 사진 색인 데 이 터 를 가 져 옵 니 다.
그리고 ImageView 에 사진 원본 을 설정 합 니 다.

@Override
 protected void onActivityResult(int requestCode, int resultCode, @Nullable Intent data) {
  super.onActivityResult(requestCode, resultCode, data);
  if(requestCode ==200 && resultCode == 200)
  {
   Bundle bundle = data.getExtras();
   int imageId = bundle.getInt("imageId");
   ImageView imageView = (ImageView) findViewById(R.id.image);
   imageView.setImageResource(imageId);
  }
 }
MainActivity 전체 예제 코드

package com.badao.selectimage;
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;
public class MainActivity extends AppCompatActivity {
 @Override
 protected void onActivityResult(int requestCode, int resultCode, @Nullable Intent data) {
  super.onActivityResult(requestCode, resultCode, data);
  if(requestCode ==200 && resultCode == 200)
  {
   Bundle bundle = data.getExtras();
   int imageId = bundle.getInt("imageId");
   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,200);
   }
  });
 }
}
총결산
위 에서 말 한 것 은 편집장 이 소개 한 안 드 로 이 드 에서 다른 Activity 를 호출 하여 결 과 를 되 돌려 주 는 것 입 니 다(프로필 사진 기능 을 선택 한 경우).여러분 에 게 도움 이 되 기 를 바 랍 니 다.궁금 한 점 이 있 으 시 면 메 시 지 를 남 겨 주세요.편집장 은 신속하게 답 해 드 리 겠 습 니 다.여기 서도 저희 사이트 에 대한 여러분 의 지지 에 감 사 드 립 니 다!
만약 당신 이 본문 이 당신 에 게 도움 이 된다 고 생각한다 면,전 재 를 환영 합 니 다.번 거 로 우 시 겠 지만 출처 를 밝 혀 주 십시오.감사합니다!

좋은 웹페이지 즐겨찾기