• 知识点整理(三)易错记录


    易错总结~  发现,其实它的request挺多的,以及错一点都会全局错,还是多记下来吧。
    https://blog.csdn.net/qq_31490071/article/details/82384011再报错???看看这个咯!!

    here 1 :线性布局

    android:orientation="vertical"/  horizontal 改变排布方式
    android:layout_gravity="top"/ "center_vertical" / bottom
    指定效果布满:
    需要布满的:    android:layout_width="0dp"
            android:layout_height="wrap_content"
            android:layout_weight="1"
    剩下那个就是:
    android:layout_width="wrap_content"
            android:layout_height="wrap_content"
    这样,上面可以填满剩下的空间
    记得一个0dp,一个大大的1!!!!

    2 监听器和创建按钮:

     Button add_blog=(Button)findViewById(R.id.add_blog);
        add_blog.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
            }
        });

    3  添加intent:

    新建活动,而不是直接新建一个布局
    那就先用显式的intent吧 New→Activity→Empty Activity
    (只要不选是主activiy就行了哈哈哈)
    这样,这个活动会自己去manifest里面注册好了~
    [布局是动态加载出来的 super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_edit);  所以名字没事儿 不可怕
    那么创建了之后,非常简单,肯定是要先new一个出来的,然后指定了前面和后面,最后就基本ok啦。
    Intent intent=new Intent(MainActivity.this,EditActivity.class);
                startActivity(intent);

    传递个值过去:

    字符串data,intent.putExtra("....",data) 第一个参数是键 第二是传递的
    取得 Intent intent = getIntent();
            String data = intent.getStringExtra("extra_data");  // 注意这里竟然只是一个引号就好了 getBooleanExtra.. 参数多一个default
    传递回来:startActivityForResult() 方法接收两个参数,第一个参数还是Intent,第二个参数是请求码,,还有onresult什么的,在书里自己看吧qwq
     
     
    跳出框框提示
     

    4. 把数据库里面的东西存储到listview里面

    listview需要 适配器:
    使用android.R.layout.simple_list_item_1 作为ListView子项布局的id,这是一个Android内置的布局文件,里面只有一个TextView,可用于简单地显示一段文本。
    (这个具体看那个(三)里面了 

    5 Toast用法

    Toast.makeText
    (FirstActivity.this, "aaaaa",Toast.LENGTH_SHORT).show();
    context写自己.this
    Log.d(.....0) 用法 前面tag是字符串,可以是这个活动的名字, 后面的也是字符串

    6.Date类型和获取时间

    发现这个老哥是获取了date直接设置的,不错,这样显然更方便一点
    Date date = new Date();
            SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm");
            String dateString = sdf.format(date);
            tv_date.setText(dateString);
    (ps: 在写好的里面改,好像库不能直接新建而要升级。emmm先不知道,所以先卸载再来之后再说  1 oncreate里面改了 2 查询的时候有了 3 存储进去的时候有 4 listview显示 )
     

    7.Image BUtton

    qwq 先做了一个imageButton:找不到该放在哪,还是回书上
    这里我们在res目录下新建一个drawable-xhdpi目录,然后将事先准备好的两张图片img_1.png和img_2.png复制到该目录当中。但是为啥新建了目录根本看不到?
    【名字不能有-  只能数字字母或者 下划线!】
    但是,这样做效率也太低了,这button仅仅是放了上去而已,想随屏滚动、想控制xx真是刀山火海啊。
    所以搜了半天,发现一个文本编辑的span类 下面这样是可以的 但只能设置一个 
                     int start =edit_passage.getSelectionStart();
                    int end = edit_passage.getSelectionEnd();
                    SpannableStringBuilder ssb = new SpannableStringBuilder(edit_passage.getText().toString());
                    ssb.setSpan(new UnderlineSpan(), start, end, Spanned.SPAN_INCLUSIVE_INCLUSIVE);
                    edit_passage.setText(ssb);
    修改样式的位置是[start,end)  和substring一样  是左闭 右开的
    就是这个问题:只能用一次,之后设置,之前的不管用了。不懂行的想substring一下,还是不行的,看到下面的博客:https://blog.csdn.net/gxp1182893781/article/details/76916796
    无论what使用哪种,一定要注意一个问题:每个CharacterStyle对象只能应用于一个Spanned,也就是说每个CharacterStyle对象只能使用一次。如果在给定的String中对多个字符应用,则只有最后一次应用会起作用。(没错)emememem.. 但是对于一个bulider,这个似乎是没用的ememem 
      builder.setSpan(CharacterStyle.wrap(colorSpan[rand]), i - 1, i, Spanned.SPAN_INCLUSIVE_INCLUSIVE); 这个并不行 只是它那个bulider更替了很多次
    但是text坏掉了 照我们这样每次取出来 的text只是个string 不带样式的string而已 所以设置一次之后再设置 就走形了...
    可以不提取string先试试吗?好了好了我知道你这个ssb可以这样了,我们来现实一点骨干一点好吗
    啊啊啊啊啊啊啊啊!苦苦看了好半天,原来我的问题竟然出现在
    edittext的获取方法上~!!! 应该是geteditabletext,如果gettext再tostring,你的样式当然没了 ,还是自己蠢吧,难怪别人都没遇到这种问题,大概本来别人就觉得不是问题吧……
    如果可以!!更有的放矢一点!你现在还是个菜菜菜菜鸟,前几天还在犯忘记找id的错误
    (注意一下区间可能多点少点
    变化颜色:ssb.setSpan(CharacterStyle.wrap(new ForegroundColorSpan(Color.GREEN)),start, end, Spanned.SPAN_INCLUSIVE_INCLUSIVE);
    那么现在,新增个格式可以了。那么只有你选中的span都有格式,才能取消。如果卡在中间,就覆盖(这种情况不用判断啦
    区间取消
    这个emm。。 经过一番努力,
                        StyleSpan[] spans = edit_passage.getEditableText().getSpans(i, i + 1, StyleSpan.class);
                        for (StyleSpan span : spans) {
    还真是,获取到你这个里有啥span,qwq,至于数组,是获取到有什么其他span吧qwq这样看挺好的还
     起码qwq  分别加span样式的方法有了。。。(editable)
    你需要:
    ssb.setSpan(new StyleSpan(Typeface.BOLD)
    (有点脑子;为什么几乎一样的上面可以下面 就不行?没理由呀,是你自己写错了吧。
    subSequence(start, end)直接返回区间,直接分割。
    发现removespan并不起作用。现在是可以调用人家的开源的外部库来编辑了呀。。。要是坐到像下载的那个那样这么好看就好了
    emmmm,到底怎么能起作用呢?灵光一现,虽然editable.removespan 这个方法没有报错,但是显然,它是给ssb类写的~
    这样我ssb.removespan。
    随机把它settet(ssb)。这大概需要一点灵性~~~ 
    好了,继续改了qwq啦啦啦
    subsequence  左臂右开same
    调试不出来。还是自己想的,大概斜体和下划线不一样而已qwq。。。
    不一样而已。如果一样,会把StyleSpan的全部都给清除的。而underline不是一类的,这一类的还有的是 italic。
    好的。那就可以回到原来的,用for循环判断了。
    emmmm嗯。。。 直接removespan似乎是不行的,需要先getspan,再直接拿走掉。
    if(cnt==num){
    StyleSpan[] spans=ss.getSpans(start, end, StyleSpan.class);
    for(int j=0; j<spans.length; j++){
    if(spans[j].getStyle()==Typeface.BOLD)
    ss.removeSpan(spans[j]);
    }
    然后,代码可以再精简点,也可不用,先实现。
    有color和size,加underline。color应该好办吧(继续看即可)size
    if(isRemove) {
                    SpanPart spanStyle = new SpanPart(fontStyle);
                    spanStyle.start = getEditableText().getSpanStart(span);
                    spanStyle.end = getEditableText().getSpanEnd(span);
                    if(span instanceof AbsoluteSizeSpan){
                        spanStyle.fontSize = ((AbsoluteSizeSpan) span).getSize();
                    }else if(span instanceof ForegroundColorSpan){
                        spanStyle.color = ((ForegroundColorSpan) span).getForegroundColor();
                    }
                    spanStyles.add(spanStyle);
                    getEditableText().removeSpan(span);
    ===================================================

    复制别人的: 改gradle版本,先改外面的

    然后 gradle可以用本地的(换好路径就ok
    若有这个错:Warning:Configuration 'testCompile' is obsolete and has been replaced with 'testImplementation' and 'testApi'.
    我的解决方法是,在 app 的 Gradle 中:【注意  是app下面的gradle~】
    compile 改为 implementation
    androidTestCompile 改为 androidTestImplementation
    testCompile 改为 testImplementation
    这样替换了过时的,再重新编译即可。
    图上要 字数和编辑选项
    dbHelper.getWritableDatabase();、
    感觉还是先看老大哥的教程什么的好啊自己踩坑太多了 …… 聊天界面什么的书上也讲的很好只是我没学qwq
    最后把注释都删掉,为了好看,或者搞两个版本
    https://developer.android.google.cn/reference/android/text/SpannableStringBuilder.html
     
     
  • 相关阅读:
    C++的高效从何而来2
    初体验ajax跨域
    ACM在线测评系统评测程序设计与实现
    高效GTD云工具 Manage Your Time
    HTTP 长连接
    使用avalon MVVM框架打造整一套jquery ui
    GhostDoc(注释生成工具)使用方法
    NUnit快速入门 笔记
    ETags
    nodejs + edge + ejs + c#
  • 原文地址:https://www.cnblogs.com/lx2331/p/10900903.html
Copyright © 2020-2023  润新知