-3

我正在尝试调用不同包中类的公共方法。我已经导入了包,所以这不是问题。我正在使用 eclipse,它给了我下面提到的错误。

代码:

public class BookView extends LinearLayout
   implements TextToSpeech.OnInitListener
   {
   private static final String LOGTAG = "BookView";
   private EPubWebView afd_webView;
   private Context afd_curContext;
  private FrameLayout afd_tableContentView;
  private String afd_cachePath = "";
  private EPubDriver afd_epubDriver;
  private AdView adView;
  private int currentPageNum = 1;
  private int totalPages;
  private int current_chapter;
  private int current_percent;
  private int pIndex;
  private int sIndex;
  private int size;
  private int chapterSize;
  private int bookSize;
  private String clickBk;
  private String bookPath;
  private String mDir = "/sdcard";
  private List<Map<String, Object>> mDataList;
  private ListView bookListView;
  private Handler handler = new Handler();
  private PopupWindow mBooksWindow;
  private int andVersion;
  private TextToSpeech tts;
  private final String errorMessage = "Download Error!";
  private boolean downloadCancel = false;
  private boolean isDownloading = false;

  public BookView(Context context, AttributeSet attrs)
  {
    super(context, attrs);
    setOrientation(1);
    this.afd_curContext = context;
    this.handler.postDelayed(new Runnable()
    {
      public void run()
      {
    BookView.this.doAdMob();
      }
    }
    , 10000L);

    this.tts = new TextToSpeech(context, this);

    this.afd_webView = new EPubWebView(context);
    DisplayMetrics metrics = new DisplayMetrics();
    ((Activity)context).getWindowManager().getDefaultDisplay()
      .getMetrics(metrics);

    LayoutInflater inflater = (LayoutInflater)context
  .getSystemService("layout_inflater");
    inflater.inflate(R.layout.afd_bookview, this);
    init();
  }

  public void jsImportBook(String epubBookPath) {
  if (!BookView.this.importBook(epubBookPath))
    return;
  BookView.this.createBookshelf();
}
}

下面的调用方法是否正确?

 public void importnewbook(String epubBookPath) {

BookView v = new BookView();
    result = v.jsImportBook(epubBookPath); 
}

我得到的错误:1)构造函数BookView()未定义2)方法jsImportBook(String)对于BookView类型未定义

4

2 回答 2

2

请记住,如果您自己没有提供任何构造函数,默认情况下编译器将添加一个无参数构造函数。

但是如果你添加一个,假设它接受一个字符串,那么编译器会假设你知道你在做什么并且不采取任何行动。这意味着你不会有一个无参数的构造函数,如果你想要一个你需要定义它。

简而言之:

1)什么都不做,你得到一个无参数的构造函数。2)添加任何构造函数,这就是你所拥有的,编译器没有添加任何其他内容。

当然,请始终检查您定义的方法是否返回您期望的类型。

于 2013-05-21T15:33:01.843 回答
1
  1. 检查您的导入声明。
  2. 您的班级中有任何参数化的构造函数吗?如果是,请添加默认构造函数。

我可以看到你的类有一个参数化的构造函数。因此,在这种情况下,不会为您创建默认构造函数。您必须自己编写一个才能编写 new BookView()。

于 2013-05-21T15:28:56.970 回答