最近很多小伙伴都在问AndroidActivity之startActivityForResult的使用和activity.startactivity这两个问题,那么本篇文章就来给大家详细解答一下,同时
最近很多小伙伴都在问Android Activity 之 startActivityForResult 的使用和activity.startactivity这两个问题,那么本篇文章就来给大家详细解答一下,同时本文还将给你拓展'startActivityForResult(android.content.Intent, int)' 已弃用、028 Android startActivityForResult()方法的使用及实例应用(选择QQ头像)、activity A →activity B→ activity C 从C退出时,怎么直接退到A?一般都有什么方法、Android Activity 使用视图绑定扩展基本 Activity等相关知识,下面开始了哦!
本文目录一览:- Android Activity 之 startActivityForResult 的使用(activity.startactivity)
- 'startActivityForResult(android.content.Intent, int)' 已弃用
- 028 Android startActivityForResult()方法的使用及实例应用(选择QQ头像)
- activity A →activity B→ activity C 从C退出时,怎么直接退到A?一般都有什么方法
- Android Activity 使用视图绑定扩展基本 Activity
Android Activity 之 startActivityForResult 的使用(activity.startactivity)
依次打开Activity A1--A2--A3--A4 这时候你如果想从第四个返回到第一Activity 的时候,就用到了startActivityForResult 这个方法了。
A1 的 intent 定义是
A2 的 intent 定义是
A3 的 intent 定义是
A4 添加一个返回按钮 点击的事件里写
关闭A4触发A3里面的方法,onActivityResult(int requestCode, int resultCode, Intent data) 在这个方法里面做判断就行了。 前两个参数分别是 我们设置的 requestCode 和 resultCode
|
'startActivityForResult(android.content.Intent, int)' 已弃用
如何解决''startActivityForResult(android.content.Intent, int)'' 已弃用
我正在开发一个关于大学应用程序的实习项目,在运行应用程序的这一部分时突然接近。这是我可以将照片上传到图库的部分。我没有收到任何错误,但这里 startActivityForResult(pickImage,REQ);它说像“startActivityForResult(android.content.Intent,int)”作为警告被弃用。
private String category;
private final int REQ= 1;
private Bitmap bitmap;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_upload_image);
selectimage = findViewById(R.id.addgalleryImage);
imageCategory = findViewById(R.id.image_category);
uploadImage = findViewById(R.id.uploadImageBtn);
galleryImageView = findViewById(R.id.galleryImageView);
String[] items = new String[]{"Select Category","Convovation","INdependence Day","Other Events"};
imageCategory.setAdapter(new ArrayAdapter<String>(this,android.R.layout.simple_spinner_dropdown_item,items));
imageCategory.setonItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent,View view,int position,long id) {
category = imageCategory.getSelectedItem().toString();
}
});
selectimage.setonClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
}
});
}
private void opengallery(){
Intent pickImage = new Intent(Intent.ACTION_PICK,MediaStore.Images.Media.EXTERNAL_CONTENT_URI);
startActivityForResult(pickImage,REQ);
}
@Override
protected void onActivityResult(int requestCode,int resultCode,@Nullable Intent data) {
super.onActivityResult(requestCode,resultCode,data);
if (requestCode == REQ && resultCode == RESULT_OK) {
Uri uri = data.getData();
try {
bitmap = MediaStore.Images.Media.getBitmap(getContentResolver(),uri);
} catch (IOException e) {
e.printstacktrace();
}
galleryImageView.setimageBitmap(bitmap);
}
}
}
解决方法
如果您想从设备中选取图像,请使用较新的 startActiityForResult() 替代方法,它是 - ActivityResultLauncher
只需按照以下步骤操作:-
首先像这样创建 ActivityResultLauncher :
ActivityResultLauncher<String> mGetContent = registerForActivityResult(new GetContent(),new ActivityResultCallback<Uri>() { @Override public void onActivityResult(Uri uri) { // Handle the returned Uri } });
然后,单击按钮或根据需要启动系统图像选择器。
@Override public void onCreate(@Nullable savedInstanceState: Bundle) { Button selectButton = findViewById(R.id.select_button); selectButton.setOnClickListener(new OnClickListener() { @Override public void onClick(View view) { // Pass in the mime type you''d like to allow the user to select // as the input mGetContent.launch("image/*"); } }); }
如您所见,您没有在任何地方看到 REQUEST_CODE。因此,使用 ActivityResultLauncher,您不必担心检查不同任务的不同请求代码。如果一切正常,ActivityResultLauncher 会为您提供最终结果。
您可以在此处找到更多相关信息:- https://developer.android.com/training/basics/intents/result
028 Android startActivityForResult()方法的使用及实例应用(选择QQ头像)
1.startActivityForResult()方法的使用
如果想在Activity中得到新打开Activity 关闭后返回的数据,需要使用系统提供的startActivityForResult(Intent intent, int requestCode)方法打开新的Activity,新的Activity 关闭后会向前面的Activity传回数据,为了得到传回的数据,必须在前面的Activity中重写onActivityResult(int requestCode, int resultCode, Intent data)方法。
2.效果图
点击button,跳转到页面2
选择需要的头像,自动返回
3.XML文件布局
页面1
<?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="horizontal"
tools:context=".MainActivity">
<LinearLayout
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:gravity="center"
android:orientation="vertical">
<LinearLayout
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:orientation="horizontal">
<TextView
android:id="@+id/textView_username"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="用户名" />
<EditText
android:id="@+id/editText_username"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:ems="10"
android:inputType="textPersonName" />
</LinearLayout>
<LinearLayout
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:orientation="horizontal">
<TextView
android:id="@+id/textView_password"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="密码" />
<EditText
android:id="@+id/editText_password"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:ems="10"
android:inputType="textPassword" />
</LinearLayout>
<LinearLayout
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:orientation="horizontal">
<TextView
android:id="@+id/textView_confirmpw"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="确认密码" />
<EditText
android:id="@+id/editText_confirmpw"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:ems="10"
android:inputType="textPassword" />
</LinearLayout>
<LinearLayout
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:orientation="horizontal">
<TextView
android:id="@+id/textView"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="E-mail地址" />
<EditText
android:id="@+id/editText"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:ems="10"
android:inputType="textPersonName" />
</LinearLayout>
</LinearLayout>
<LinearLayout
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:gravity="center"
android:orientation="vertical">
<ImageView
android:id="@+id/imageView"
android:layout_width="match_parent"
android:layout_height="wrap_content"
app:srcCompat="@mipmap/ic_launcher" />
<Button
android:id="@+id/button"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="Button" />
</LinearLayout>
</LinearLayout>
页面2
<?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=".Page2Activity">
<GridView
android:id="@+id/gridview1"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_marginTop="10dp"
android:horizontalSpacing="3dp"
android:verticalSpacing="3dp"
android:numColumns="4">
</GridView>
</LinearLayout>
GridView 子项的布局
<?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="vertical" >
<ImageView
android:id="@+id/img"
android:layout_width="88dp"
android:layout_height="88dp"
android:src="@mipmap/ic_launcher" />
</LinearLayout>
4.java后台
页面1
package com.lucky.test33activity3;
import android.content.Intent;
import android.support.annotation.Nullable;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.ImageView;
public class MainActivity extends AppCompatActivity {
Button button1;
ImageView imageView;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
button1=findViewById(R.id.button);
imageView=findViewById(R.id.imageView);
button1.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Intent intent=new Intent(MainActivity.this,Page2Activity.class);
startActivityForResult(intent,0x01);
}
});
}
@Override
protected void onActivityResult(int requestCode, int resultCode, @Nullable Intent data) {
if(requestCode==0x01&&resultCode==0x02){
int id=data.getIntExtra("002",0);
imageView.setImageResource(id);
}
super.onActivityResult(requestCode, resultCode, data);
}
}
页面2
package com.lucky.test33activity3;
import android.content.Intent;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.AdapterView;
import android.widget.GridView;
import android.widget.SimpleAdapter;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
public class Page2Activity extends AppCompatActivity {
GridView gridView;
SimpleAdapter simpleAdapter; //简单适配器可以将图片和文件组合起来
List<Map<String,Object>> list1;
//Android studio工程将图片转变为的数字
int[] images={R.mipmap.img01,R.mipmap.img02,R.mipmap.img03,R.mipmap.img04,R.mipmap.img05,R.mipmap.img06,R.mipmap.img07,R.mipmap.img08};
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_page2);
gridView=findViewById(R.id.gridview1);
//将图片放入list1中
list1=new ArrayList<>(); //实例化list1
for (int i = 0; i <images.length ; i++) {
Map<String,Object> map=new HashMap<>(); //实例化map
map.put("001",images[i]); //给map添加值,参数1为代号,参数2为数据值
list1.add(map);
}
//实例化simpleAdapter,并设置参数,参数2为数据,参数3为子项的布局文件,参数4为数据的代号,参数5为组件的id
simpleAdapter=new SimpleAdapter(Page2Activity.this,list1,R.layout.itemsimple,new String[]{"001"},new int[]{R.id.img});
gridView.setAdapter(simpleAdapter); //设置适配器
//给GridView的列表项添加点击事件
gridView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
Intent intent1=new Intent(); //接收intent
intent1.putExtra("002",images[position]); //放入返回的数据
setResult(0x02,intent1);
finish(); //关闭页面
}
});
}
}
5.效果图
activity A →activity B→ activity C 从C退出时,怎么直接退到A?一般都有什么方法
Android Activity 使用视图绑定扩展基本 Activity
如何解决Android Activity 使用视图绑定扩展基本 Activity
我有一个基础活动,其中包括工具栏和导航抽屉。 我所有的活动都扩展了基础活动以设置工具栏标题并使用导航抽屉执行一些操作。
一切正常,但现在我想使用视图绑定,但无法像以前一样显示工具栏和导航抽屉。
这是基本活动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="vertical"
xmlns:app="http://schemas.android.com/apk/res-auto">
<androidx.appcompat.widget.Toolbar
android:id="@+id/toolbar"
android:layout_height="wrap_content"
android:layout_width="match_parent"
android:minHeight="?attr/actionBarSize"
android:background="?attr/colorPrimary"
app:theme="@style/ThemeOverlay.AppCompat.Dark.ActionBar"
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto" />
<androidx.drawerlayout.widget.DrawerLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:id="@+id/drawerlayout">
<TextView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:textColor="@color/white"
/>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical">
<FrameLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:id="@+id/content_frame"/>
</LinearLayout>
<!--Second child layout-->
<com.google.android.material.navigation.NavigationView
android:id="@+id/navigation_view"
android:layout_width="wrap_content"
android:layout_height="match_parent"
android:layout_gravity="start"
app:headerLayout="@layout/navigation_header"
app:menu="@menu/navigation_menu">
</com.google.android.material.navigation.NavigationView>
</androidx.drawerlayout.widget.DrawerLayout>
</LinearLayout>
这是基本活动
public class BaseActivity extends AppCompatActivity {
DrawerLayout drawerLayout;
ActionBarDrawerToggle actionBarDrawerToggle;
NavigationView navigationView;
Context context;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.navigation_drawer);
Toolbar toolbar = findViewById(R.id.toolbar);
navigationView = findViewById(R.id.navigation_view);
drawerLayout = findViewById(R.id.drawerlayout);
context = this;
actionBarDrawerToggle = new ActionBarDrawerToggle(this,drawerLayout,toolbar,R.string.drawer_open,R.string.drawer_close);
drawerLayout.addDrawerListener(actionBarDrawerToggle);
if (navigationView != null) {
navigationView.setNavigationItemSelectedListener(item -> {
switch (item.getItemId()) {
case R.id.logout:
logout();
break;
case R.id.home:
Intent intent = new Intent (BaseActivity.this,HomeActivity.class);
intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_CLEAR_TOP);
startActivity(intent);
break;
}
return false;
});
}
}
public void logout() {
//perform action ..
}
这里是我如何在其他激活中使用此基础活动
public class HomeActivity extends BaseActivity {
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
FrameLayout contentFrameLayout = findViewById(R.id.content_frame);
getLayoutInflater().inflate(R.layout.activity_home,contentFrameLayout);
Toolbar toolbar = findViewById(R.id.toolbar);
toolbar.setTitle(getResources().getString(R.string.home));
}
这是我在使用视图绑定后所做的
public class HomeActivity extends BaseActivity {
binding = ActivityHomeBinding.inflate(getLayoutInflater());
View view = binding.getRoot();
setContentView(view);
}
我按照下面的方法尝试过,但没有用 Base Activity extending Activity ViewBinding Crash
关于Android Activity 之 startActivityForResult 的使用和activity.startactivity的介绍已经告一段落,感谢您的耐心阅读,如果想了解更多关于'startActivityForResult(android.content.Intent, int)' 已弃用、028 Android startActivityForResult()方法的使用及实例应用(选择QQ头像)、activity A →activity B→ activity C 从C退出时,怎么直接退到A?一般都有什么方法、Android Activity 使用视图绑定扩展基本 Activity的相关信息,请在本站寻找。
本文标签: