简体   繁体   English

空点异常错误-android.content.ContextWrapper.startService

[英]Null point exception error - android.content.ContextWrapper.startService

I have unexpectedly received a null point exception error while trying to run the application. 尝试运行应用程序时,我意外收到了空点异常错误。 It occurred when I click on the "ichat button" that would lead you to another page: 当我单击“ ichat button”会导致您转到另一页时发生:

Below is the log cat message: 以下是日志猫消息:

10-09 17:50:20.505: E/AndroidRuntime(1005): FATAL EXCEPTION: main
10-09 17:50:20.505: E/AndroidRuntime(1005): java.lang.NullPointerException
10-09 17:50:20.505: E/AndroidRuntime(1005):     at android.content.ContextWrapper.startService(ContextWrapper.java:383)
10-09 17:50:20.505: E/AndroidRuntime(1005):     at com.dooba.beta.matchOptionActivity1$3$1.done(matchOptionActivity1.java:241)
10-09 17:50:20.505: E/AndroidRuntime(1005):     at com.parse.FindCallback.internalDone(FindCallback.java:45)
10-09 17:50:20.505: E/AndroidRuntime(1005):     at com.parse.FindCallback.internalDone(FindCallback.java:31)
10-09 17:50:20.505: E/AndroidRuntime(1005):     at com.parse.Parse$6$1.run(Parse.java:917)
10-09 17:50:20.505: E/AndroidRuntime(1005):     at android.os.Handler.handleCallback(Handler.java:615)
10-09 17:50:20.505: E/AndroidRuntime(1005):     at android.os.Handler.dispatchMessage(Handler.java:92)
10-09 17:50:20.505: E/AndroidRuntime(1005):     at android.os.Looper.loop(Looper.java:137)
10-09 17:50:20.505: E/AndroidRuntime(1005):     at android.app.ActivityThread.main(ActivityThread.java:4745)
10-09 17:50:20.505: E/AndroidRuntime(1005):     at java.lang.reflect.Method.invokeNative(Native Method)
10-09 17:50:20.505: E/AndroidRuntime(1005):     at java.lang.reflect.Method.invoke(Method.java:511)
10-09 17:50:20.505: E/AndroidRuntime(1005):     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:786)
10-09 17:50:20.505: E/AndroidRuntime(1005):     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:553)
10-09 17:50:20.505: E/AndroidRuntime(1005):     at dalvik.system.NativeStart.main(Native Method)

Below is the code: 下面是代码:

public class matchOptionActivity1 extends Activity{

     protected TextView mUserRetrieved;
        private String currentUserId;

        protected TextView mUserActivityNameRetrieved;
        protected TextView mUserNameRetrieved;
        protected TextView mUserAgeRetrieved;
        protected TextView mUserHeadlineRetrieved;
        String userGender = ParseUser.getCurrentUser().getString("Gender");
        String activityName = ParseUser.getCurrentUser().getString("ActivityName");
        Number maxDistance = ParseUser.getCurrentUser().getNumber(
                "Maximum_Distance");
        String userLookingGender = ParseUser.getCurrentUser().getString(
                "Looking_Gender");
        Number minimumAge = ParseUser.getCurrentUser().getNumber("Minimum_Age");
        Number maximumAge = ParseUser.getCurrentUser().getNumber("Maximum_Age");
        Number userage = ParseUser.getCurrentUser().getNumber("UserAge");
        private FeedbackDialog feedBack;
        private ProgressDialog progressDialog;
        private BroadcastReceiver receiver;
        private MessageService.MessageServiceInterface sinchService;
        private Boolean bound = false;

        private Intent intent;
        private Intent serviceIntent;



   @Override
   public void onCreate(Bundle savedInstanceState) {

       super.onCreate(savedInstanceState);
       setContentView(R.layout.matchoption);



    feedBack = new FeedbackDialog(this, "AF-46D8F2A319EA-0A");
       ParseQuery<ParseUser> query = ParseUser.getQuery();

       // query.whereEqualTo("ActivityName",userActivitySelectionName);

       query.whereNotEqualTo("objectId", ParseUser.getCurrentUser()
               .getObjectId());
       // users with Gender = currentUser.Looking_Gender
       query.whereEqualTo("Gender", userLookingGender);
       // users with Looking_Gender = currentUser.Gender
       query.whereEqualTo("Looking_Gender", userGender);
       query.setLimit(1);
       //  query2.whereEqualTo("UserMatchedRequest1", "confirmed");
       query.whereEqualTo("ActivityName", activityName);
       query.whereGreaterThanOrEqualTo("UserAge", minimumAge);
       query.whereLessThanOrEqualTo("UserAge", maximumAge);

       ParseQuery<ParseUser> query2 = ParseUser.getQuery();

       // query.whereEqualTo("ActivityName",userActivitySelectionName);

       query2.whereNotEqualTo("objectId", ParseUser.getCurrentUser()
               .getObjectId());
       // users with Gender = currentUser.Looking_Gender
       query2.whereEqualTo("Gender", userLookingGender);
       // users with Looking_Gender = currentUser.Gender
       query2.whereEqualTo("Looking_Gender", userGender);
       query2.setLimit(1);
       //  query2.whereEqualTo("UserMatchedRequest1", "confirmed");
       query2.whereEqualTo("ActivityName", activityName);
       query2.whereGreaterThanOrEqualTo("UserAge", minimumAge);
       query2.whereLessThanOrEqualTo("UserAge", maximumAge);

       query.findInBackground(new FindCallback<ParseUser>() {
           @Override
           public void done(List<ParseUser> objects,ParseException e) {

               for(int i=0;i<objects.size();i++){
                   // Do whatever you need to extract object from "users"
                   ParseQuery<ParseObject> query = ParseQuery.getQuery("User");
                   query.whereNotEqualTo("objectId", ParseUser.getCurrentUser()
                           .getObjectId());
                   // users with Gender = currentUser.Looking_Gender
                   query.whereEqualTo("Gender", userLookingGender);
                   // users with Looking_Gender = currentUser.Gender
                   query.whereEqualTo("Looking_Gender", userGender);
                   query.setLimit(1);
                   //  query2.whereEqualTo("UserMatchedRequest1", "confirmed");

                   query.whereEqualTo("ActivityName", activityName);
                   query.whereGreaterThanOrEqualTo("UserAge", minimumAge);
                   query.whereLessThanOrEqualTo("UserAge", maximumAge);

                   mUserNameRetrieved = (TextView) findViewById(R.id.tvmname1);

                   mUserNameRetrieved.setText(objects.get(i).get("Name").toString()); 



               }
   }//for loop
           });

       query2.findInBackground(new FindCallback<ParseUser>() {

           @Override
           public void done(List<ParseUser> objects,ParseException e) {

               for(int i=0;i<objects.size();i++){
                   // Do whatever you need to extract object from "users"
                      ParseQuery<ParseObject> query2 = ParseQuery.getQuery("User");
                      query2.whereNotEqualTo("objectId", ParseUser.getCurrentUser()
                              .getObjectId());
                      // users with Gender = currentUser.Looking_Gender
                      query2.whereEqualTo("Gender", userLookingGender);
                      // users with Looking_Gender = currentUser.Gender
                      query2.whereEqualTo("Looking_Gender", userGender);
                      query2.setLimit(1);
                    //  query2.whereEqualTo("UserMatchedRequest1", "confirmed");

                      query2.whereEqualTo("ActivityName", activityName);
                      query2.whereGreaterThanOrEqualTo("UserAge", minimumAge);
                      query2.whereLessThanOrEqualTo("UserAge", maximumAge);


                   ParseFile image = objects.get(i).getParseFile("ProfilePicture");


                   ParseImageView imageView = (ParseImageView) findViewById(R.id.profilePictureresultm);



                    // The placeholder will be used before and during the fetch, to be replaced by the fetched image
                    // data.
                    imageView.setPlaceholder(getResources().getDrawable(R.drawable.profile_pict));
                    imageView.setParseFile(image);

                    imageView.loadInBackground(new GetDataCallback() {
                      @Override
                      public void done(byte[] data, ParseException e) {
                          if (data != null) {
                              Log.i("ParseImageView", "Fetched: " + data.length);
                            } else {
                              Log.e("ParseImageView", "Error fetching: " + e.getMessage());
                            }
                      }


                });
               }
   }//for loop
           });




       final Button ichat = (Button) this.findViewById(R.id.btnQuickChat);
        ichat.setOnClickListener(new OnClickListener() {

            @Override
            public void onClick(View v) {


           openConversation();


            }


            private void openConversation() {
                // TODO Auto-generated method stub
                  ParseQuery<ParseUser> query = ParseUser.getQuery();
                     query.whereNotEqualTo("objectId", ParseUser.getCurrentUser()
                           .getObjectId());
                        // users with Gender = currentUser.Looking_Gender
                         query.whereEqualTo("Gender", userLookingGender);
                         // users with Looking_Gender = currentUser.Gender
                          query.whereEqualTo("Looking_Gender", userGender);
                         query.setLimit(1);
                        query.whereEqualTo("ActivityName", activityName);
                        query.whereGreaterThanOrEqualTo("UserAge", minimumAge);
                         query.whereLessThanOrEqualTo("UserAge", maximumAge);


                    query.findInBackground(new FindCallback<ParseUser>() {
                        public void done(List<ParseUser> user, ParseException e) {
                              if (e == null) {

                                   Intent intent = new Intent(getApplicationContext(), MessagingActivity1.class);
                                   startService(serviceIntent);
                                   intent.putExtra("RECIPIENT_ID", user.get(0).getObjectId());
                                   startActivity(intent);
                               } else {
                                   Toast.makeText(getApplicationContext(),
                                       "Error finding that user",
                                           Toast.LENGTH_SHORT).show();
                               }
                           }
                        });
                    }
        });


}



 //show a loading spinner while the sinch client starts
   private void showSpinner() {
       progressDialog = new ProgressDialog(this);
       progressDialog.setTitle("Loading");
       progressDialog.setMessage("Please wait...");
       progressDialog.show();

       receiver = new BroadcastReceiver() {
           @Override
           public void onReceive(Context context, Intent intent) {
               Boolean success = intent.getBooleanExtra("success", false);
               progressDialog.dismiss();
               if (!success) {
                   Toast.makeText(getApplicationContext(), "Messaging service failed to start", Toast.LENGTH_LONG).show();
               }
           }
       };

       LocalBroadcastManager.getInstance(this).registerReceiver(receiver, new IntentFilter("com.dooba.beta.matchOptionActivity1"));
   }

   @Override
   public void onResume() {

       super.onResume();
   }
}

I believe the error is found within this portion: 我相信在此部分中发现错误:

query.findInBackground(new FindCallback<ParseUser>() {
                    public void done(List<ParseUser> user, ParseException e) {
                          if (e == null) {

                               Intent intent = new Intent(getApplicationContext(), MessagingActivity1.class);
                               startService(serviceIntent);
                               intent.putExtra("RECIPIENT_ID", user.get(0).getObjectId());
                               startActivity(intent);
                           } else {
                               Toast.makeText(getApplicationContext(),
                                   "Error finding that user",
                                       Toast.LENGTH_SHORT).show();
                           }
                       }
                    });
                }
    });

Any help would be greatly appreciated. 任何帮助将不胜感激。

I have been struggling to resolve it since a while, and would really appreciate support. 一段时间以来,我一直在努力解决该问题,非常感谢您的支持。 Thanks in advance 提前致谢

Update 更新

10-09 18:27:08.450: E/AndroidRuntime(999): FATAL EXCEPTION: main
10-09 18:27:08.450: E/AndroidRuntime(999): java.lang.ExceptionInInitializerError
10-09 18:27:08.450: E/AndroidRuntime(999):  at com.sinch.android.rtc.internal.client.ServiceFactory.createUserAgent(ServiceFactory.java:44)
10-09 18:27:08.450: E/AndroidRuntime(999):  at com.sinch.android.rtc.internal.client.DefaultSinchClient.<init>(DefaultSinchClient.java:157)
10-09 18:27:08.450: E/AndroidRuntime(999):  at com.sinch.android.rtc.internal.client.InternalSinchClientFactory.createSinchClient(InternalSinchClientFactory.java:14)
10-09 18:27:08.450: E/AndroidRuntime(999):  at com.sinch.android.rtc.DefaultSinchClientBuilder.build(DefaultSinchClientBuilder.java:95)
10-09 18:27:08.450: E/AndroidRuntime(999):  at com.dooba.beta.MessageService.startSinchClient(MessageService.java:56)
10-09 18:27:08.450: E/AndroidRuntime(999):  at com.dooba.beta.MessageService.onStartCommand(MessageService.java:40)
10-09 18:27:08.450: E/AndroidRuntime(999):  at android.app.ActivityThread.handleServiceArgs(ActivityThread.java:2490)
10-09 18:27:08.450: E/AndroidRuntime(999):  at android.app.ActivityThread.access$1900(ActivityThread.java:130)
10-09 18:27:08.450: E/AndroidRuntime(999):  at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1292)
10-09 18:27:08.450: E/AndroidRuntime(999):  at android.os.Handler.dispatchMessage(Handler.java:99)
10-09 18:27:08.450: E/AndroidRuntime(999):  at android.os.Looper.loop(Looper.java:137)
10-09 18:27:08.450: E/AndroidRuntime(999):  at android.app.ActivityThread.main(ActivityThread.java:4745)
10-09 18:27:08.450: E/AndroidRuntime(999):  at java.lang.reflect.Method.invokeNative(Native Method)
10-09 18:27:08.450: E/AndroidRuntime(999):  at java.lang.reflect.Method.invoke(Method.java:511)
10-09 18:27:08.450: E/AndroidRuntime(999):  at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:786)
10-09 18:27:08.450: E/AndroidRuntime(999):  at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:553)
10-09 18:27:08.450: E/AndroidRuntime(999):  at dalvik.system.NativeStart.main(Native Method)
10-09 18:27:08.450: E/AndroidRuntime(999): Caused by: java.lang.UnsatisfiedLinkError: Couldn't load sinch-android-rtc: findLibrary returned null
10-09 18:27:08.450: E/AndroidRuntime(999):  at java.lang.Runtime.loadLibrary(Runtime.java:365)
10-09 18:27:08.450: E/AndroidRuntime(999):  at java.lang.System.loadLibrary(System.java:535)
10-09 18:27:08.450: E/AndroidRuntime(999):  at com.sinch.android.rtc.internal.natives.jni.UserAgentFactory.<clinit>(UserAgentFactory.java:9)

The problem is here 问题在这里

Intent intent = new Intent(getApplicationContext(), MessagingActivity1.class);
startService(serviceIntent);
intent.putExtra("RECIPIENT_ID", user.get(0).getObjectId());
startActivity(intent);

You are trying to start a service but the intent you passed to the method is never initialized. 您试图启动服务,但是传递给该方法的意图永远不会初始化。

If you want to start a Service and an Activity you have to create two separate Intent objects - one that is passed to the startService method and another for the startActivity . 如果要启动ServiceActivity ,则必须创建两个单独的Intent对象-一个传递给startService方法,另一个传递给startActivity

Intent serviceIntent = new Intent(getApplicationContext(), YourServiceName.class);
startService(serviceIntent);

Intent activityIntent = new Intent(getApplicationContext(), MessagingActivity1.class);
startActivity(activityIntent);

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

相关问题 android.content.contextwrapper.getResources上的Null指针异常 - Null Pointer Exception at android.content.contextwrapper.getResources MapBlocks Android 中的空点异常错误 - Null point Exception error in MapBlocks Android 是否为contextWrapper.getResources()提供了空指针异常? 使用自定义侦听器时 - null pointer exception for contextWrapper.getResources()? when using custom listener android.content.contextwrapper.getsystemservice上的java.lang.nullpointerexception(Contextwrapper.java:386) - java.lang.nullpointerexception at android.content.contextwrapper.getsystemservice(Contextwrapper.java:386) 在Android中使用共享首选项尝试保存字符串,但在空对象上将错误作为空点异常 - using shared preference in android trying to save a string but getting error as null point exception on a null object NullPointerException用于Android ContextWrapper - NullPointerException for android ContextWrapper Android 媒体播放器 Null 点异常(Java) - Android Mediaplayer Null point Exception (Java) 简单卡类的空点异常错误 - Null Point Exception Error with simple card class 空指针异常错误android - Null pointer exception error android Android中的空指针异常错误 - Null pointer exception error in android
 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM