2013-10-25 1 views
0

Я пытаюсь отправить изображение обратно в WhatsApp похожа на Returning an Image to whatsappВозвращения изображения в WhatsApp Android

Я использовал решение, данное в ссылке, но я получаю исключение нулевого указателя в строке

((Activity) context).setResult(Activity.RESULT_OK, shareIntent); 

Я отправлю свой полный код здесь: -

общественного класса Lst1Fragment расширяет фрагмент {

GridView gridView1; 
public static boolean isinint = false; 
Context context; 
File openprev; 

@Override 
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { 
    View view = inflater.inflate(R.layout.fragment_xml_title, container, false); 
    createListView(view); 
    // Inflate the layout for this fragment 
    return view; 
} 

private void createListView(View view) 
{ 
    gridView1 = (GridView) view.findViewById(R.id.gridView1); 
    //Set option as Multiple Choice. So that user can able to select more the one option from list 
    gridView1.setAdapter(new ImageAdapter(getActivity())); 

    gridView1.setOnItemClickListener(new OnItemClickListener() { 


     @Override 
     public void onItemClick(AdapterView<?> view, View arg1, int pos, 
       long arg3) { 

      Uri path = Uri.parse("android.resource://" 
        + getActivity().getPackageName() + "/" 
        + R.drawable.action); 

      Intent startUpIntent = getActivity().getIntent(); 


      if (startUpIntent!=null && startUpIntent.getType()!=null) //check if any application has executed your app 
      { 
       if(startUpIntent.getType().indexOf("image/") != -1) 

        isinint=true; //check if the requested type is an image. If true, set a public static boolean, f.e. named isinint to true. Default is false. 
      } 

      if(isinint) //check if any app cares for the result 
      { 
       Intent shareIntent = new Intent(android.content.Intent.ACTION_SEND, path); 
         //Uri.fromFile(openprev)); 
       //Create a new intent. First parameter means that you want to send the file. 
       //The second parameter is the URI pointing to a file on the sd card. (openprev has the datatype File) 

       ((Activity) context).setResult(Activity.RESULT_OK, shareIntent); //set the file/intent as result 
       ((Activity) context).finish(); //close your application and get back to the requesting application like GMail and WhatsApp 
       return; //do not execute code below, not important 
      } 

     } 
    }); 


} 

public class ImageAdapter extends BaseAdapter { 
    private Context mContext; 

    // Keep all Images in array 
    public Integer[] mThumbIds = { 
      R.drawable.action, R.drawable.comedy,    
      R.drawable.drama, R.drawable.horror 

    }; 

    // Constructor 
    public ImageAdapter(Context c){ 
     mContext = c; 
    } 

    @Override 
    public int getCount() { 
     return mThumbIds.length; 
    } 

    @Override 
    public Object getItem(int position) { 
     return mThumbIds[position]; 
    } 

    @Override 
    public long getItemId(int position) { 
     return 0; 
    } 

    @Override 
    public View getView(int position, View convertView, ViewGroup parent) { 
     ImageView imageView = new ImageView(mContext); 
     imageView.setImageResource(mThumbIds[position]); 
     imageView.setScaleType(ImageView.ScaleType.CENTER_INSIDE); 
     return imageView; 
    } 
} 
} 

мой полный трассировки стека: -

10-25 09:53:56.605: W/dalvikvm(2913): threadid=1: thread exiting with uncaught exception (group=0x2aacc560) 
10-25 09:53:56.605: E/AndroidRuntime(2913): Uncaught handler: thread main exiting due to uncaught exception 
10-25 09:53:56.615: W/System.err(2913): java.io.IOException: Permission denied 
10-25 09:53:56.625: E/AndroidRuntime(2913): FATAL EXCEPTION: main 
10-25 09:53:56.625: E/AndroidRuntime(2913): java.lang.NullPointerException 
10-25 09:53:56.625: E/AndroidRuntime(2913):  at com.example.myfragments.Lst1Fragment$1.onItemClick(Lst1Fragment.java:68) 
10-25 09:53:56.625: E/AndroidRuntime(2913):  at android.widget.AdapterView.performItemClick(AdapterView.java:284) 
10-25 09:53:56.625: E/AndroidRuntime(2913):  at android.widget.AbsListView$PerformClick.run(AbsListView.java:1812) 
10-25 09:53:56.625: E/AndroidRuntime(2913):  at android.os.Handler.handleCallback(Handler.java:587) 
10-25 09:53:56.625: E/AndroidRuntime(2913):  at android.os.Handler.dispatchMessage(Handler.java:92) 
10-25 09:53:56.625: E/AndroidRuntime(2913):  at android.os.Looper.loop(Looper.java:130) 
10-25 09:53:56.625: E/AndroidRuntime(2913):  at android.app.ActivityThread.main(ActivityThread.java:3683) 
10-25 09:53:56.625: E/AndroidRuntime(2913):  at java.lang.reflect.Method.invokeNative(Native Method) 
10-25 09:53:56.625: E/AndroidRuntime(2913):  at java.lang.reflect.Method.invoke(Method.java:507) 
10-25 09:53:56.625: E/AndroidRuntime(2913):  at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:895) 
10-25 09:53:56.625: E/AndroidRuntime(2913):  at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:653) 
10-25 09:53:56.625: E/AndroidRuntime(2913):  at dalvik.system.NativeStart.main(Native Method) 
10-25 09:53:56.645: W/System.err(2913): java.io.FileNotFoundException: /data/plog.log (Permission denied) 

ответ

0

Вы не инициализирован Context context; где-нибудь в своем классе, но вы типаж его в Activity Вот почему вы получаете NPE

+0

Спасибо за ответ, но как я инициализировать контекст внутри фрагмента. В деятельности я могу сделать это с помощью getApplicationContext, но здесь, если я попробую getActivity() для инициализации контекста, я все равно получаю сообщение об ошибке. –

+0

Используйте эти методы..getActivity(). SetResult (resultCode, data); \t \t getActivity(). Finish(); –

+0

спасибо..Просто получилось, что он работает .. Большое спасибо :-) –