问题一:
The method add(Fragment) in the type ArrayList is not applicable for the arguments (FragmentOne)
错误解决
把FragmentOne中的 import android.app.Fragment;改为 android.support.v4.app.Fragment;
即保证在MainActivity中引入的包与 FragmentOne中引入的包一致,要不然add方法报错
问题二:
Caused by: android.view.InflateException: Binary XML file line #11: Error inflating class
自定义控件时,如果代码写成如下形式,就会报上面的错误
public class MyViewPager extends ViewPager{
public MyViewPager(Context context) {
super(context);
}
原因是:
在构造方法中少添加了一个参数,参数应为(Context, AttributeSet),其中第二个参数用来将xml文件中的属性初始化。
自定义控件若需要在xml文件中使用,就必须重写带如上两个参数的构造方法。添加后即可正常使用了。
即要写成如下形式就正确:
public class MyViewPager extends ViewPager{
public MyViewPager(Context context,AttributeSet attrs) { //两个参数的构造方法
super(context,attrs);
}
问题三:
在引用shareSDK 的时候,虚拟机运行不起来,一直报如下的错误:
Unable to execute dex: Multiple dex files define Lcn/sharesdk/onekeyshare/CustomerLogo;
Conversion to Dalvik format failed: Unable to execute dex: Multiple dex files define Lcn/sharesdk/onekeyshare/CustomerLogo;
Conversion to Dalvik format failed 翻译成中文就是:转换成虚拟机的形式失败,重复的安卓可执行dex文件 定义 Lcn/sharesdk/onekeyshare/CustomerLogo
我自己的项目在 电脑上的位置是:F:\ftp\android-fourth\项目名字\bin\classes\cn\sharesdk\onekeyshare
解决方法:把onekeyshare整个文件从sharesdk文件夹下删除,就是不要onekeyshare这个文件夹在sharesdk 文件目录下,sharesdk文件夹下的其他文件保留,就ok了
如我的删除之后是这样的:F:\ftp\android-fourth\喵信\bin\classes\cn\sharesdk(只有R$drawable.class;R$string.class;R.class 这三个 .class 文件 在sharesdk的文件下,没有了onekeyshare)
问题四:
错误: 在类 thread.RunnableDemo 中找不到 main 方法, 请将 main 方法定义为:
public static void main(String[] args)
否则 JavaFX 应用程序类必须扩展javafx.application.Application
描述:一开始在thread包下创建的是RunnableDemo 类,后面按F2 改了类名,把类名改成其他名字,之后运行下,就报这样的错误
注:一个Java源文件中最多只能有一个public类,当有一个public类时,源文件名必须与之一致,否则无法编译,如果源文件中没有一个public类,则文件名与类中没有一致性要求。
解决方法:项目——>报名——>类名,右击,选择Run As——>运行配置,接下来的操作不走就是,找到类名,步骤如下图:
这样问题再次运行程序,问题解决了,不会再报错。
问题五:
为什么LinkedList中添加字符串,排序是那样排?元素的索引? 但是使用Vector 不管是添加数字还是字符串,都能正确排序和输出正确的索引值
System.out.println(list);//list=[50, 100, 500, 300, 500],注:list是LinkedList类型,添加的都是字符串,如"50",
Collections.sort(list);
System.out.println("list="+list);//list=[100, 300, 50, 500, 500].为什么是这样排序?
int index=Collections.binarySearch(list, "100");
System.out.println("元素的索引值为"+index);//输出:100的索引是0;如果是上面那样排,100的索引值为0,是正确的,但是我们希望它按数字大小排的话,100的索 引为1才对
原因分析:
因为添加的是字符串,所以排序要按照字符串的形式来排,怎么解决呢?这里只需要把添加到list的数据全部改为添加数字,即int类型,然后就可以正确的按数字大小排序,且输出元素100的索引值,为1,也是正确的。