开发过程中自己遇到的问题总结

问题一:

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,也是正确的。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值