AIDL导包后,make时提示找不到PedometerChartBean

AIDL导包后,make时提示找不到PedometerChartBean

增加PedometerChartBean.java 和 PedometerChartBean.aidl 在 IPedometerService.aidl 文件中导包后make提示下面错误,只要一导包就报错,屏蔽掉就没有任何问题:

http://img1.sycdn.imooc.com//climg/5e175072092c3c2c13730933.jpg

关于IPedometerService.aidl 跟PedometerService.java 不在同一个文件夹的的原因是:如果跟教程那样建立AIDL文件,make后不会生成java文件,我是通过下图方式建立AIDL文件的,建立后IDE会自动建立aidl文件夹和相应的包。

http://img1.sycdn.imooc.com//climg/5e175224096dcbb908650560.jpg

通过上面的方式建立AIDL文件后make会在生成如下文件,只有生成了下图文件才能在PedometerService.java中使用IPedometerService.Stub()类:

http://img1.sycdn.imooc.com//climg/5e17532d092274b908820603.jpg

但是只要在IPedometerService.aidl文件中加入import com.imooc.beans.PedometerChartBean; 这条导包语句就无法make成功,重启IDE、Rebuild Project、从网站下载的源文件中复制代码过去都试过了,无法解决,实在没辙了。

PedometerChartBean.java 文件:

package com.imooc.beans;

import android.os.Parcel;
import android.os.Parcelable;

public class PedometerChartBean implements Parcelable {
    private int[] arrayData = new int[1440];
    private int index = 0;

    protected PedometerChartBean(Parcel in) {
        arrayData = in.createIntArray();
        index = in.readInt();
    }

    public static final Creator<PedometerChartBean> CREATOR = new Creator<PedometerChartBean>() {
        @Override
        public PedometerChartBean createFromParcel(Parcel in) {
            return new PedometerChartBean(in);
        }

        @Override
        public PedometerChartBean[] newArray(int size) {
            return new PedometerChartBean[size];
        }
    };

    public int[] getArrayData() {
        return arrayData;
    }

    public void setArrayData(int[] arrayData) {
        this.arrayData = arrayData;
    }

    public int getIndex() {
        return index;
    }

    public void setIndex(int index) {
        this.index = index;
    }

    @Override
    public int describeContents() {
        return 0;
    }

    @Override
    public void writeToParcel(Parcel dest, int flags) {
        dest.writeIntArray(arrayData);
        dest.writeInt(index);
    }
}

PedometerChartBean.aidl文件:

package com.imooc.beans;
parcelable PedometerChartBean;

IPedometerService.aidl文件:

package com.imooc.service;

import com.imooc.beans.PedometerChartBean;

interface IPedometerService {
   //turnOnStepCounting
   void startCount();
   //endStepCounting
   void stopCount();
   //resetStepCount
   void resetCount();
   //getStepCount
   int getSetpsCount();
   //getTheEnergyConsumed
   double getCalorie();
   //getDistance
   double getDistance();
   //saveData
   void saveData();
    //settingTheSensorSensitivity
   void setSensitivity(double sensitivity);
   //getSensorSensitivity
   double getSensitivity();
    //setTheSamplingInterval
   void setInterval(int interval);
    //getSampleTime
   int getInterval();
   //getStartTimestamp
   long getStartTimeStamp();
   //getServiceRunningStatus
   int getServiceStatus();
   //getSportsChartData
   PedometerChartBean getChartData();
}


正在回答

登陆购买课程后可参与讨论,去登陆

2回答

老师用你这三个文件测试是没有问题的。可以make成功。你再看一下文件夹路径什么的有没有问题。或者你测试一下老师的源文件,是不是能make成功。祝:学习愉快

  • 喝白酒的兔子 提问者 #1
    导包的路径确实没有问题的,在aidl同一个包下建立一个java类使用alt+Enter自动导包路径也是: import com.imooc.beans.PedometerChartBean; 实在整不明白了
    2020-01-10 11:33:45
  • 喝白酒的兔子 提问者 #2
    PedometerChartBean.aidi必须放在aidl目录下,并且要与PedometerChartBean.java的包名一致,这两点不符合都会提示找不到PedometerChartBean。
    2020-01-10 16:09:38
提问者 喝白酒的兔子 2020-01-10 16:07:30

终于把AIDL搞定了,学了AIDL以来遇到的问题有好几个,我写了一篇文章作为总结:

https://blog.csdn.net/weixin_38858037/article/details/103923079

问题已解决,确定采纳
还有疑问,暂不采纳

恭喜解决一个难题,获得1积分~

来为老师/同学的回答评分吧

0 星
请稍等 ...
意见反馈 帮助中心 APP下载
官方微信

在线咨询

领取优惠

免费试听

领取大纲

扫描二维码,添加
你的专属老师