• Android Studio使用,live tamplate配置


    1、new Module  mylibrary,编译时需要在app的build.gradle中配置:

    implementation project(':mylibrary'),
    //mylibrary的build.gradle中implementation的内容

    2、出现以下错误

    FAILURE: Build failed with an exception.
    
    * Where:
    Initialization script '/private/var/folders/48/kbm80yjd17g60jh0fv0vm5l80000gn/T/Test_main__.gradle' line: 20
    
    * What went wrong:
    A problem occurred configuring project ':app'.
    > SourceSet with name 'main' not found.
    
    * Try:
    Run with --stacktrace option to get the stack trace. Run with --info or --debug option to get more log output. Run with --scan to get full insights.
    
    * Get more help at https://help.gradle.org
    
    BUILD FAILED in 1s

    解决方案: 

    项目.idea/gradle.xml:

    <GradleProjectSettings>标签下少了

    <option name="delegatedBuild" value="false" />

    这行配置,然后给新项目添加这行配置,重启

    意思是不委托gradle进行构建。现实效果也是加了这行配置之后就是jvm执行Java类的main方法了,而不是gradle当做task来执行了。

    Android Studio 3.0 无法运行Java代码main() 方法的解决方案

    Android Studio 升级到3.0 以后发现 运行Java 代码中的main()方法的时候grandle 就会报错的问题

    解决方法 :

    在gradle.properties文件中添加android.enableAapt2=false

    3、Live tamplate配置

       1)单例

        /**
         * 1、给mInstance分配实例分配对象
         * 2、调用Singleton1的构造方法,初始化成员字段
         * 3、Singleton1对象赋值给mInstance
         * 以上三个步骤在jdk中可以是乱序的,会指令重排,所以会导致DCL失效,
         */
        private volatile static $CLASSNAME$ mInstance = null;  //volatile,防止指令重排,让双重检查更安全
    
        private $CLASSNAME$() { }    // 私有的构造方法
        public static $CLASSNAME$ getInstance() {
            if (mInstance == null) {
                synchronized ($CLASSNAME$.class) {//DCL
                    if (mInstance == null) {
                        mInstance = new $CLASSNAME$();
                    }
                }
            }
            return mInstance;
        }

       2)fragment切换

        private void switchFragment(Fragment from, Fragment to) {
            if (from != to){
                FragmentManager manager = getSupportFragmentManager();
                FragmentTransaction transaction = manager.beginTransaction();
                if (!to.isAdded()){
                    if (from != null){
                        transaction.hide(from);
                    }
                    if (to != null){
                        transaction.add($FragmentID$, to);
                    }
                } else {
                    if (from != null){
                        transaction.hide(from);
                    }
                    if (to != null){
                        transaction.show(to).commit();
                    }
                }
            }
        }

       3)tag

    public static final String TAG = $CLASSNAME$.class.getSimpleName();
  • 相关阅读:
    杂记:Linux下gcc升级
    杂记:OSX下编译安装最新版RedisDesktopMmanager
    查漏补缺:Vector中去重
    Mac下使用VScode进行C/C++开发
    添砖加瓦:几种常见的数据摘要算法(MD5、CRC32、SHA1和SHA256)
    添砖加瓦:snappy无损压缩算法
    杂记:OSX 安装openssl
    码海拾遗:内存四区
    Luogu 4284 [SHOI2014]概率充电器
    Luogu 4473 [国家集训队]飞飞侠
  • 原文地址:https://www.cnblogs.com/anny0920/p/12887398.html
Copyright © 2020-2023  润新知