Приложение аварийно завершает работу при попытке отобразить захваченное изображение в imageview
У меня есть imageview в этом приложении, я могу захватить изображение при нажатии на imageview, но когда я хочу отобразить это изображение на imageview после захвата, приложение становится разбитым. Попробовал некоторые коды из интернета, но проблема все еще сохраняется. В чем же проблема? Я просто не могу понять, чем это вызвано.. :(
Мой код находится ниже:
package com.example.newfragment; import java.io.File; import android.support.v4.app.Fragment; import android.app.Activity; import android.content.Intent; import android.graphics.Bitmap; import android.graphics.PixelFormat; import android.hardware.Camera; import android.hardware.Camera.Parameters; import android.net.Uri; import android.os.Bundle; import android.os.Environment; import android.provider.MediaStore; import android.view.LayoutInflater; import android.view.View; import android.view.View.OnClickListener; import android.view.ViewGroup; import android.widget.Button; import android.widget.ImageView; import android.widget.TextView; import android.widget.Toast; public class TextFragment extends Fragment implements OnClickListener { TextView text,add; private ImageView img; Button b; int value; String mobile; private static final int CAMERA_REQUEST = 1888; Camera camera; @Override public View onCreateView(LayoutInflater inflater,ViewGroup container, Bundle savedInstanceState) { View view = inflater.inflate(R.layout.text_fragment, container, false); add= (TextView)view.findViewById(R.id.address); img= (ImageView)view.findViewById(R.id.img); b= (Button)view.findViewById(R.id.b); img.setOnClickListener(this); b.setOnClickListener(this); return view; } ////////////data received here//////////// public void change(int txt, String txt1, String txt2 ){ add.setText(txt1 ); value = txt; mobile = txt2; } @Override public void onClick(View v) { // TODO Auto-generated method stub if(v.equals(img)) { /*Clicking and saving image to sd card*/ ////////////////////////////////////// File file = new File(Environment.getExternalStorageDirectory(), "Frag_list"); file.mkdirs(); String path = Environment.getExternalStorageDirectory() +"/Frag_list/"+value+".jpg"; File file2= new File(path); Uri outputFileUri = Uri.fromFile( file2 ); Intent intent = new Intent(android.provider.MediaStore.ACTION_IMAGE_CAPTURE ); intent.putExtra( MediaStore.EXTRA_OUTPUT, outputFileUri ); startActivityForResult( intent, CAMERA_REQUEST ); ///////////////////////////////////// } if(v.equals(b)) { /*Calling number*/ //////////////////////////////////////////////// Uri number = Uri.parse("tel:" +mobile); Intent callIntent = new Intent(Intent.ACTION_CALL, number); startActivity(callIntent); //////////////////////////////////////////////// } } ///setting image in display /////////////////////////////////////////////////////////// public void onActivityResult(int requestCode, int resultCode, Intent data) { if (requestCode == CAMERA_REQUEST && resultCode == Activity.RESULT_OK) { Bitmap photo = (Bitmap) data.getExtras().get("data"); ////////////////////////PROBLEM: APP GETTING CRASHED HERE img.setImageBitmap(photo); } } ////////////////////*/ }
И ошибка, которую я получаю:
10-01 13:34:18.850: W/dalvikvm(7121): threadid=1: thread exiting with uncaught exception (group=0x416159a8) 10-01 13:34:18.873: E/AndroidRuntime(7121): FATAL EXCEPTION: main 10-01 13:34:18.873: E/AndroidRuntime(7121): java.lang.RuntimeException: Failure delivering result ResultInfo{who=null, request=198496, result=-1, data=null} to activity {com.example.newfragment/com.example.newfragment.MainActivity}: java.lang.NullPointerException 10-01 13:34:18.873: E/AndroidRuntime(7121): at android.app.ActivityThread.deliverResults(ActivityThread.java:3525) 10-01 13:34:18.873: E/AndroidRuntime(7121): at android.app.ActivityThread.handleSendResult(ActivityThread.java:3568) 10-01 13:34:18.873: E/AndroidRuntime(7121): at android.app.ActivityThread.access$1100(ActivityThread.java:162) 10-01 13:34:18.873: E/AndroidRuntime(7121): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1412) 10-01 13:34:18.873: E/AndroidRuntime(7121): at android.os.Handler.dispatchMessage(Handler.java:107) 10-01 13:34:18.873: E/AndroidRuntime(7121): at android.os.Looper.loop(Looper.java:194) 10-01 13:34:18.873: E/AndroidRuntime(7121): at android.app.ActivityThread.main(ActivityThread.java:5371) 10-01 13:34:18.873: E/AndroidRuntime(7121): at java.lang.reflect.Method.invokeNative(Native Method) 10-01 13:34:18.873: E/AndroidRuntime(7121): at java.lang.reflect.Method.invoke(Method.java:525) 10-01 13:34:18.873: E/AndroidRuntime(7121): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:833) 10-01 13:34:18.873: E/AndroidRuntime(7121): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:600) 10-01 13:34:18.873: E/AndroidRuntime(7121): at dalvik.system.NativeStart.main(Native Method) 10-01 13:34:18.873: E/AndroidRuntime(7121): Caused by: java.lang.NullPointerException 10-01 13:34:18.873: E/AndroidRuntime(7121): at com.example.newfragment.TextFragment.onActivityResult(TextFragment.java:118) 10-01 13:34:18.873: E/AndroidRuntime(7121): at android.support.v4.app.FragmentActivity.onActivityResult(FragmentActivity.java:153) 10-01 13:34:18.873: E/AndroidRuntime(7121): at android.app.Activity.dispatchActivityResult(Activity.java:5311) 10-01 13:34:18.873: E/AndroidRuntime(7121): at android.app.ActivityThread.deliverResults(ActivityThread.java:3521) 10-01 13:34:18.873: E/AndroidRuntime(7121): ... 11 more 10-01 13:34:20.822: I/Process(7121): Sending signal. PID: 7121 SIG: 9
Richard MacCutchan
Ява.яз.NullPointerException означает, что вы используете переменную где-то, которая не была инициализирована. Вам нужно будет использовать свой отладчик, чтобы точно выяснить, где возникает проблема.
Srimoyee Sarkar
Я знаю, где ошибка. Я отметил это в своем коде. Но я не знаю, что является причиной этого.. Я не могу найти там никакой ошибки
Richard MacCutchan
Тогда справедливо предположить, что любая переменная img
или переменная photo
это оскорбительные предметы. Поэтому вам нужно проследить свой код, чтобы выяснить, почему.
Srimoyee Sarkar
Я ее разгадал. :) Просто изменил код на другой (добавил мое решение ниже). Теперь все работает нормально. Спасибо за комментарий.