Srimoyee Sarkar Ответов: 1

Приложение аварийно завершает работу при попытке отобразить захваченное изображение в 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

Я ее разгадал. :) Просто изменил код на другой (добавил мое решение ниже). Теперь все работает нормально. Спасибо за комментарий.

1 Ответов

Рейтинг:
0

Srimoyee Sarkar

предыдущий:

if (requestCode == CAMERA_REQUEST && resultCode == Activity.RESULT_OK)
           {
               Bitmap photo = (Bitmap) data.getExtras().get("data"); ////////////////////////PROBLEM: APP GETTING CRASHED HERE
               img.setImageBitmap(photo);

           }



тока один:

File image = new  File(Environment.getExternalStorageDirectory() +"/Frag_list/"+value+".jpg");
                if(image.exists()){

                         img.setImageBitmap(BitmapFactory.decodeFile(image.getAbsolutePath()));/////////////setting image in imageview
            }