gpt4 book ai didi

android - 为什么 startActivityForResult 不返回任何东西?

转载 作者:太空宇宙 更新时间:2023-11-03 13:36:34 25 4
gpt4 key购买 nike

我在 PreferenceActivity 中有一个“选择图像”:

Intent i = new Intent(Intent.ACTION_PICK,
android.provider.MediaStore.Images.Media.EXTERNAL_CONTENT_URI);

startActivityForResult(i, IMAGE_SELECT);

但是当我从图库中选择一张图片时,它不会向我的 PreferenceActivityonActivityResult 返回任何内容:

@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {

Toast.makeText(getApplicationContext(), "THIS TOAST IS NOT SHOWING",
Toast.LENGTH_LONG).show();

}

我还需要做什么?在 list 中添加一些东西?不可能吗?

这是我的“整个”类(class)(省略了不相关的代码):

package com.xuso.myapp;


import yuku.ambilwarna.AmbilWarnaDialog;
import yuku.ambilwarna.AmbilWarnaDialog.OnAmbilWarnaListener;
import android.app.Activity;
import android.app.AlertDialog;
import android.app.AlertDialog.Builder;
import android.content.Context;
import android.content.DialogInterface;
import android.content.Intent;
import android.content.SharedPreferences;
import android.database.Cursor;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.net.Uri;
import android.os.Bundle;
import android.preference.CheckBoxPreference;
import android.preference.ListPreference;
import android.preference.Preference;
import android.preference.Preference.OnPreferenceChangeListener;
import android.preference.Preference.OnPreferenceClickListener;
import android.preference.PreferenceActivity;
import android.provider.MediaStore;
import android.view.LayoutInflater;
import android.view.View;
import android.widget.SeekBar;
import android.widget.SeekBar.OnSeekBarChangeListener;
import android.widget.TextView;
import android.widget.Toast;



public class Settings extends PreferenceActivity {

protected static final int NEED_RESTART = 2;
protected static final int IMAGE_SELECT = 3;
private int bg_color; //There are a lot more

private Context context = this;
private int result = RESULT_CANCELED;

private SharedPreferences sp;
private SharedPreferences.Editor editor;


Preference pref_bg_color; //There are a lot more



public void getPrefs(){

sp = getSharedPreferences("myapp_prefs", Activity.MODE_PRIVATE);
editor = sp.edit();

bg_color = sp.getInt("pref_bg_color", 0xff000000);
//... and the rest of the GETs.

}






@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
addPreferencesFromResource(R.xml.settings);


getPrefs();


//A lot of declarations of listeners when Preferences pressed
//...
//...
pref_bg_image.setOnPreferenceClickListener(new OnPreferenceClickListener() {

@Override
public boolean onPreferenceClick(Preference preference) {

Intent i = new Intent(Intent.ACTION_PICK,
android.provider.MediaStore.Images.Media.EXTERNAL_CONTENT_URI);
startActivityForResult(i, IMAGE_SELECT);


return false;
}
});


//...
//...
//More and more declarations of Preferences.





}



//This is for returning results with preferences changes to the Main activity
private void getBackAndCommit()
{
Intent intent= getIntent();
setResult(result, intent);
finish();
overridePendingTransition(0, 0);
}


//Commit changes on back pressed
public void onBackPressed ()
{

getBackAndCommit();

}


@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
switch(requestCode) {
case IMAGE_SELECT:
if(resultCode == RESULT_OK){
Uri selectedImage = data.getData();
String[] filePathColumn = {MediaStore.Images.Media.DATA};

Cursor cursor = getContentResolver().query(selectedImage, filePathColumn, null, null, null);
cursor.moveToFirst();

int columnIndex = cursor.getColumnIndex(filePathColumn[0]);
String filePath = cursor.getString(columnIndex);
cursor.close();


Bitmap yourSelectedImage = BitmapFactory.decodeFile(filePath);
}
}

}



}

这是我的 list :

<application android:icon="@drawable/myapp_icon" android:label="@string/app_name"
>
<activity android:name=".Main"
android:label="@string/app_name"
android:theme="@android:style/Theme.NoTitleBar"
>
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>


</activity>

<activity android:name=".Settings"
android:label="@string/app_name"
>
</activity>

</application>

最佳答案

必须工作,添加全类:

import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;

public class StackOverflowAppActivity extends Activity {
private final int PICK_IMAGE = 0;

/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);

Intent i = new Intent(Intent.ACTION_PICK, android.provider.MediaStore.Images.Media.EXTERNAL_CONTENT_URI);
startActivityForResult(i, PICK_IMAGE);


}

@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);

switch (requestCode) {

case PICK_IMAGE:
if (resultCode == RESULT_OK) {
// do your thing
}
}
}
}

关于android - 为什么 startActivityForResult 不返回任何东西?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6484228/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com