Jest postęp. Tworzę nowy intent, startuje nową aktywność w której wybieram zdjęcie ale dostaję NPE kiedy chcę ustawić zdjęcie jako tło.
Dodaje zmiany do kodu poprzedniego a tutaj aktywność z galerią:
public class BrowseImage extends Activity {
View view;
private static final int SELECT_PICTURE = 1;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_browse_image);
view = (View) findViewById(R.id.layout);
findViewById(R.id.galer).setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
Intent i = new Intent(
Intent.ACTION_PICK,
android.provider.MediaStore.Images.Media.EXTERNAL_CONTENT_URI);
startActivityForResult(i, SELECT_PICTURE);
}
});
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.browse_image, menu);
return true;
}
@SuppressLint("NewApi")
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data){
//super.onActivityResult(requestCode, resultCode, data);
if(requestCode == SELECT_PICTURE && data != null && data.getData() != null) {
Uri _uri = data.getData();
System.out.println("DATA "+_uri);
//User had pick an image.
Cursor cursor = getContentResolver().query(_uri, new String[] { android.provider.MediaStore.Images.ImageColumns.DATA }, null, null, null);
cursor.moveToFirst();
//Link to the image
final String imageFilePath = cursor.getString(0);
cursor.close();
Bitmap bm = BitmapFactory.decodeFile(imageFilePath);
final BitmapDrawable drawable = new BitmapDrawable(getResources(), bm);
view.setBackgroundDrawable(drawable);
view.invalidate();
}
// super.onActivityResult(requestCode, resultCode, data);
//
// Intent intent = new Intent(this, MyWidgetProvider.class);
// intent.setAction("android.appwidget.action.APPWIDGET_UPDATE");
// int ids[] = AppWidgetManager.getInstance(getApplication()).getAppWidgetIds(new ComponentName(getApplication(), MyWidgetProvider.class));
// intent.putExtra(AppWidgetManager.EXTRA_APPWIDGET_IDS,ids);
// sendBroadcast(intent);
//
}
}
Dodam, że przy rzutowaniu layoutu na RelativeLayout zamiast View też nie działa.
błąd:
02-09 10:32:46.679: E/AndroidRuntime(10327): FATAL EXCEPTION: main
02-09 10:32:46.679: E/AndroidRuntime(10327): java.lang.RuntimeException: Failure delivering result ResultInfo{who=null, request=1, result=-1, data=Intent { dat=content://media/external/images/media/134598 typ=image/jpeg (has extras) }} to activity {pl..valentinewidget/pl..valentinewidget.BrowseImage}: java.lang.NullPointerException
02-09 10:32:46.679: E/AndroidRuntime(10327): at android.app.ActivityThread.deliverResults(ActivityThread.java:3387)
02-09 10:32:46.679: E/AndroidRuntime(10327): at android.app.ActivityThread.handleSendResult(ActivityThread.java:3437)
02-09 10:32:46.679: E/AndroidRuntime(10327): at android.app.ActivityThread.access$1100(ActivityThread.java:139)
02-09 10:32:46.679: E/AndroidRuntime(10327): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1291)
02-09 10:32:46.679: E/AndroidRuntime(10327): at android.os.Handler.dispatchMessage(Handler.java:99)
02-09 10:32:46.679: E/AndroidRuntime(10327): at android.os.Looper.loop(Looper.java:154)
02-09 10:32:46.679: E/AndroidRuntime(10327): at android.app.ActivityThread.main(ActivityThread.java:4945)
02-09 10:32:46.679: E/AndroidRuntime(10327): at java.lang.reflect.Method.invokeNative(Native Method)
02-09 10:32:46.679: E/AndroidRuntime(10327): at java.lang.reflect.Method.invoke(Method.java:511)
02-09 10:32:46.679: E/AndroidRuntime(10327): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:784)
02-09 10:32:46.679: E/AndroidRuntime(10327): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:551)
02-09 10:32:46.679: E/AndroidRuntime(10327): at dalvik.system.NativeStart.main(Native Method)
02-09 10:32:46.679: E/AndroidRuntime(10327): Caused by: java.lang.NullPointerException
02-09 10:32:46.679: E/AndroidRuntime(10327): at pl..valentinewidget.BrowseImage$2.run(BrowseImage.java:90)
02-09 10:32:46.679: E/AndroidRuntime(10327): at android.app.Activity.runOnUiThread(Activity.java:4231)
02-09 10:32:46.679: E/AndroidRuntime(10327): at pl.robertosoft.valentinewidget.BrowseImage.onActivityResult(BrowseImage.java:87)
02-09 10:32:46.679: E/AndroidRuntime(10327): at android.app.Activity.dispatchActivityResult(Activity.java:4740)
02-09 10:32:46.679: E/AndroidRuntime(10327): at android.app.ActivityThread.deliverResults(ActivityThread.java:3383)
02-09 10:32:46.679: E/AndroidRuntime(10327): ... 11 more