为了账号安全,请及时绑定邮箱和手机立即绑定

一按计算结果的时候就报错

04-11 02:39:02.488 2986-2986/com.example.wwq.aidlclient E/AndroidRuntime: FATAL EXCEPTION: main

                                                                          Process: com.example.wwq.aidlclient, PID: 2986

                                                                          java.lang.NullPointerException: Attempt to invoke interface method 'int com.example.wwq.myapplication.IMyAidl.add(int, int)' on a null object reference

                                                                              at com.example.wwq.aidlclient.MainActivity.onClick(MainActivity.java:66)

                                                                              at android.view.View.performClick(View.java:4780)

                                                                              at android.view.View$PerformClick.run(View.java:19866)

                                                                              at android.os.Handler.handleCallback(Handler.java:739)

                                                                              at android.os.Handler.dispatchMessage(Handler.java:95)

                                                                              at android.os.Looper.loop(Looper.java:135)

                                                                              at android.app.ActivityThread.main(ActivityThread.java:5254)

                                                                              at java.lang.reflect.Method.invoke(Native Method)

                                                                              at java.lang.reflect.Method.invoke(Method.java:372)

                                                                              at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:903)

                                                                              at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:698)



正在回答

13 回答

   //调用远程的服务
           int res= iMyAidl.add(num2, num1);
           mEtRes.setText(res);

出错在   mEtRes.setText(res);这里。mEtRes.setText(res);中的res是一个int 类型,那么res值对应是values文件夹中的strings.xml里的值。

应该改为mEtRes.setText(res+“”);这样就行了

2 回复 有任何疑惑可以回复我~
#1

qq_little权权 提问者

也不行。。。。
2016-07-07 回复 有任何疑惑可以回复我~
#2

linhualuo 回复 qq_little权权 提问者

不行的话应该是服务没有在AndroidManife.xml中注册并且设置exported="true", enabled="true", process=":remote"。可以试试
2017-04-25 回复 有任何疑惑可以回复我~
#3

qq_little权权 提问者 回复 linhualuo

好的啊
2017-05-03 回复 有任何疑惑可以回复我~

我也遇到这个问题。我解决了。

大家想一下,我们除了app  module 之外,又建立了一个aidlclient module。那么我们运行的时候,应该安装并启动哪一个呢?现在一想,既然出现了编辑框和按钮界面,那不是我们在aidlclient module编辑的页面吗?对呀。我们只安装启动了aidlclient module。也就是只要客户端。

那么服务端跑哪里呢?想一下,是不是我们没有安装呢?对滴。

那么怎么确定自己安装是那个module呢?看下图:

http://img1.sycdn.imooc.com//587f46bd0001915202460141.jpg

0 回复 有任何疑惑可以回复我~

把app那个module先运行到手机上一次就可以了,手机上根本就没有你要远程调用的那个进程怎么调用。

0 回复 有任何疑惑可以回复我~

在服务端 注册<service android:name=".AIDL"
   android:enabled="true"
   android:exported="true"></service>

0 回复 有任何疑惑可以回复我~

解决了没有啊 啊啊啊,我也刚遇到这个问题

0 回复 有任何疑惑可以回复我~

解决了没有啊 啊啊啊,我也刚遇到这个问题

0 回复 有任何疑惑可以回复我~

service 与activity一样必须在AndroidManifest.xml里面注册,因为你没有注册,肯定出错了

1 回复 有任何疑惑可以回复我~
#1

qq_little权权 提问者

有注册啊
2016-05-16 回复 有任何疑惑可以回复我~
#2

轻敲浅唱xLee 回复 qq_little权权 提问者

除了注册之外还要设置属性:exported=true
2016-10-11 回复 有任何疑惑可以回复我~

http://img1.sycdn.imooc.com//572af47e00012f5a08540387.jpg这是啥意思啊 a

0 回复 有任何疑惑可以回复我~
#1

qq_little权权 提问者

空指针
2016-05-06 回复 有任何疑惑可以回复我~
#2

麦穗3 回复 qq_little权权 提问者

怎么解决啊
2016-05-07 回复 有任何疑惑可以回复我~
#3

qq_little权权 提问者 回复 麦穗3

不知道
2016-05-09 回复 有任何疑惑可以回复我~

package com.example.wwq.AidlClient;

import android.content.ComponentName;
import android.content.Context;
import android.content.Intent;
import android.content.ServiceConnection;
import android.os.IBinder;
import android.os.RemoteException;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;

import com.example.wwq.myapplication.IMyAidl;

public class MainActivity extends AppCompatActivity implements View.OnClickListener {

   private EditText mEtNum1;
   private EditText mEtNum2;
   private EditText mEtRes;
   private Button mBtnAdd;

   IMyAidl iMyAidl;
   private ServiceConnection conn = new ServiceConnection() {
       //绑定上服务的时候
       @Override
       public void onServiceConnected(ComponentName name, IBinder service) {
        //拿到了远程的服务
         iMyAidl =  IMyAidl.Stub.asInterface(service);
       }
       //断开服务的时候
       @Override
       public void onServiceDisconnected(ComponentName name) {
           //回收资源
           iMyAidl = null;
       }
   };

   @Override
   protected void onCreate(Bundle savedInstanceState) {
       super.onCreate(savedInstanceState);
       setContentView(R.layout.activity_main);
       initView();
       //软件一启动就绑定服务
       bindService();
   }

   private void initView() {
       mEtNum1 = (EditText) findViewById(R.id.et_num1);
       mEtNum2 = (EditText) findViewById(R.id.et_num2);
       mEtRes = (EditText) findViewById(R.id.et_res);
       mBtnAdd = (Button) findViewById(R.id.btn_add);

       mBtnAdd.setOnClickListener(this);


   }

   @Override
   public void onClick(View v) {
       int num1 = Integer.parseInt(mEtNum1.getText().toString());
      int num2 = Integer.parseInt(mEtNum2.getText().toString());


       try {
           //调用远程的服务
           int res= iMyAidl.add(num2, num1);
           mEtRes.setText(res);

       } catch (RemoteException e) {
           e.printStackTrace();
           mEtRes.setText("错误了");
       }

   }

   private void bindService() {
       //获取到服务端
       Intent intent = new Intent();
       //新版本,必须 显示intent启动 绑定服务
       intent.setComponent(new ComponentName
               ("com.example.wwq.myapplication","com.example.wwq.myapplication.IRemoteService"));

       bindService(intent,conn, Context.BIND_AUTO_CREATE);
   }

   @Override
   protected void onDestroy() {
       super.onDestroy();
       unbindService(conn);
   }
}

0 回复 有任何疑惑可以回复我~

服务端那个类的名字

包名+类名   用.把前面的包名省略了

0 回复 有任何疑惑可以回复我~
#1

qq_little权权 提问者

那客户端那里要不要注册什么东西?
2016-04-25 回复 有任何疑惑可以回复我~
#2

Js_Ly 回复 qq_little权权 提问者

不用注册
2016-04-25 回复 有任何疑惑可以回复我~
#3

qq_little权权 提问者 回复 Js_Ly

调用远程服务, int res=那里显示空指针
2016-04-26 回复 有任何疑惑可以回复我~
首页上一页12下一页尾页

举报

0/150
提交
取消

一按计算结果的时候就报错

我要回答 关注问题
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号