小编Ake*_*Jha的帖子

MVVM 的 RoboBinding 与 Android 绑定

使用 RoboBinding 与 Android Binding 有何优缺点。

例如。

  1. RoboBinding 可以用于片段吗?
  2. Android 的 Fragment 绑定怎么样?
  3. 有没有使用反射在运行时减慢 Android 速度?
  4. 还有哪些可以用 proguard 混淆?
  5. 两者中的任何一个都可以自动生成 viewModel 接口吗?

Android 绑定信息

RoboBinding 演员表

model-view-controller android mvvm robobinding

5
推荐指数
1
解决办法
1210
查看次数

Android Studio中手动下载gradle项目超时的依赖文件

我正在尝试使用 gradle 将 Robobing 与 AspectJ 添加到 Android Studio 中的新项目中。当我单击“将项目与 Gradle 文件同步”时,该过程仍停留在“Gradle:下载https://jcenter.bintray.com/org/aspectj/aspectjtools/1.8.2/aspectjtools-1.8.2.jar ”最后8小时过夜。它没有超时或抛出一些错误。

我尝试手动下载aspectjtools-1.8.2.jar并将其放置在C:\Users\Knobloch.gradle\caches\modules-2\files-2.1\org.aspectj\aspectjtools\1.8.2中,但从附近的文件夹中发现他们有我需要的某种 GUID 子文件夹。

我尝试在 libs 文件夹中手动添加 jar 并使用:

compile files('libs/aspectjtools-1.8.2.jar')
Run Code Online (Sandbox Code Playgroud)

这不起作用。(现在我注意到模块配置中的 gradle 编译树函数是多余的)。

这是我的项目 build.gradle 的相关部分:

buildscript {
 repositories {
    jcenter()
    maven() {
        name 'RoboBinding AspectJPlugin Maven Repository'
        url "https://github.com/RoboBinding/RoboBinding-aspectj-plugin/raw/master/mavenRepo"
    }
 }
 dependencies {
    classpath 'org.robobinding:aspectj-plugin:0.8.4'
    classpath 'com.neenbedankt.gradle.plugins:android-apt:1.4'
 }
}
apply plugin: 'org.robobinding.android-aspectj'
apply plugin: 'com.neenbedankt.android-apt'
Run Code Online (Sandbox Code Playgroud)

以及我的 Module:app build.gradle 中的相关部分:

dependencies {
 compile fileTree(include: ['*.jar'], dir: 'libs')
 compile 'com.android.support:appcompat-v7:22.2.0'
 compile 'com.android.support:support-v4:22.2.0'
 compile "org.robobinding:robobinding:$robobindingVersion"
 aspectPath "org.robobinding:robobinding:$robobindingVersion"
 //alternatively …
Run Code Online (Sandbox Code Playgroud)

android aspectj gradle android-studio robobinding

5
推荐指数
1
解决办法
9468
查看次数

如何在简单的非活动 java 类中创建类似于 onDestroy 的方法?

我想在类的实例关闭或销毁时执行一两个操作。我正在寻找类似于活动中 onDestroy 的东西。

编辑

我添加了代码,指出如何从 Helper 类返回 SQLiteDatabase。我使用最终代码来确保数据库已关闭。

public class PMDBDatabase {

    private static SQLiteDatabase DataBase = null;
    private static PMDBHelper dbHelper = null;

    public SQLiteDatabase getDatabase(Context ctx) throws SQLException {
        if (DataBase == null) {
            dbHelper = PMDBHelper.getInstance(ctx);
            DBOpen();
        } else
            if(!DataBase.isOpen())
                DBOpen();
        return DataBase;
    }

    private void DBOpen() throws SQLException {
        DataBase = dbHelper.getWritableDatabase();
    }

    public void close(){
        if(DataBase != null)  DataBase.close();
    }

    protected void finalize() throws Throwable {
        try {
            close();
        } finally {
            super.finalize();
        }
    } …
Run Code Online (Sandbox Code Playgroud)

java android ondestroy

5
推荐指数
1
解决办法
4459
查看次数

更改导航抽屉菜单项的颜色

这就是我当前的导航抽屉的样子:

在此输入图像描述

我把它分成了4组.我所要做的就是给每个小组一个不同的文字颜色.我正在尝试这些选项SETTINGS,FEEDBACK并且TERMS AND CONDITIONS有一个较小的字体和一点黑色.我搜索过,但找不到单独定制导航抽屉组的方法.这是我为菜单编写的代码:

<menu xmlns:android="http://schemas.android.com/apk/res/android">


<group
    android:id="@+id/menu"
    android:checkableBehavior="single">

    <item
        android:id="@+id/nav_targets"
        android:icon="@drawable/icon_target"
        android:title="Targets" />

    <item
        android:id="@+id/nav_testing"
        android:icon="@drawable/icon_testing"
        android:title="Testing" />

    <item
        android:id="@+id/nav_course_work"
        android:icon="@drawable/icon_course_work"
        android:title="Course Work" />

    <item
        android:id="@+id/nav_schedule"
        android:icon="@drawable/icon_schedule"
        android:title="Schedule" />

    <item
        android:id="@+id/nav_profile"
        android:icon="@drawable/icon_profile"
        android:title="Profile" />

</group>

<group
    android:id="@+id/settings">
    <item
        android:title="SETTINGS"
        android:id="@+id/settings_item"></item>
</group>

<group
    android:id="@+id/feedback">
    <item
        android:title="FEEDBACK"
        android:id="@+id/feedback_item"></item>
</group>


<group
    android:id="@+id/TnC">
    <item
        android:title="TERMS &#038; CONDITIONS"
        android:id="@+id/t_n_c_item"></item>
</group>
Run Code Online (Sandbox Code Playgroud)

有没有办法实现它?

android navigation-drawer

5
推荐指数
1
解决办法
6125
查看次数

转到ViewPager中的下一页

ViewPager我的MainActivity中有一个.其中的每一页都是片段.因此,每次向右或向左滑动时,都会创建一个新的片段实例,并相应地更新片段视图.

我也有两个按钮:LEFTRIGHT导航.这些按钮位于片段内,而不在活动中.用户可以滑动或者按相关按钮在页面之间导航.

问题在于:由于我正在通过MainActivity更改视图,如何onClick在Activity中检测这些按钮的事件以更新片段?

这是PagerAdapter类(从所有地方删除所有不相关的代码):

public class SectionsPagerAdapter extends FragmentPagerAdapter {

    public SectionsPagerAdapter(FragmentManager fm) {
        super(fm);
    }

    @Override
    public Fragment getItem(int position) {

        // logic part for the views.

        return PlaceholderFragment.newInstance(sectionNumber, questionStatus, questionOrder, showNext, showPrevious);
    }
Run Code Online (Sandbox Code Playgroud)

这是PlaceHolderFragment班级:

public class PlaceholderFragment extends Fragment{

    //some global variables

    public static PlaceholderFragment newInstance(int sectionNumber, int questionStatus, String questionOrder, boolean showNext, boolean showPrevious) {
        PlaceholderFragment fragment = new PlaceholderFragment();

        //setting up the arguments …
Run Code Online (Sandbox Code Playgroud)

android android-fragments android-viewpager

5
推荐指数
3
解决办法
1万
查看次数

导入图像资产时出现问题

我正在尝试将PNG图像资源导入到我的项目中.但是形象正在失去细节.它只是保留了外部背景.图像转换为可靠资产:

在此输入图像描述

如您所见,源资产在中心有一个白色勾号.但是,在导入之后,它仍然是一个没有刻度的实心圆圈.有解决方案吗

更新:尝试Android资产工作室,但结果相同.我错过了什么?:

在此输入图像描述

android image android-image

5
推荐指数
1
解决办法
3613
查看次数

setCompoundDrawablesWithIntrinsicBounds无法正常工作

我有一个电子邮件字段EditText.我正在尝试在验证为真时在文本字段的末尾添加绿色勾号图标,并且setError当它为假时.

这是我正在使用的代码片段:

email.setOnFocusChangeListener(new View.OnFocusChangeListener() {
        @Override
        public void onFocusChange(View v, boolean hasFocus) {
            if (!hasFocus) {
                String mail = email.getText().toString();
                if(!android.util.Patterns.EMAIL_ADDRESS.matcher(mail).matches()) {
                    email.setError("Please enter a valid email address");
                } 
                else {
                    Log.i("YaY","Email is valid!!!");
                    email.setCompoundDrawablesWithIntrinsicBounds(0, 0, R.drawable.validated, 0);
                }
            }
        }
    });
Run Code Online (Sandbox Code Playgroud)

问题:

虽然我可以看到日志Yay: Email is valid!!!,但似乎没有设置图标,因为我看不到它.但是当我改变if-conditionto false,这意味着setError永远不会被调用时,我可以看到日志和图标.

为什么我看到这种奇怪的行为的任何解释?我错过了什么?

android android-edittext

4
推荐指数
1
解决办法
2686
查看次数

降低圈复杂度,多条if语句

我有以下代码:

private Facility updateFacility(Facility newFacility, Facility oldFacility) {
    if (newFacility.getCity() != null)
        oldFacility.setCity(newFacility.getCity());
    if (newFacility.getContactEmail() != null) 
        oldFacility.setContactEmail(newFacility.getContactEmail());
    if (newFacility.getContactFax() != null) 
        oldFacility.setContactFax(newFacility.getContactFax());
    if (newFacility.getContactName() != null) 
        oldFacility.setContactName(newFacility.getContactName());
    // ......
}
Run Code Online (Sandbox Code Playgroud)

大约有 14 个这样的检查和分配。也就是说,除了少数,我需要修改 oldFacility 对象的所有字段。我得到了这个代码 14 的圈复杂度,根据 SonarQube,这是“授权大于 10”。关于如何降低圈复杂度的任何想法?

java cyclomatic-complexity sonarqube

3
推荐指数
1
解决办法
9429
查看次数

为什么我的构建需要这么长时间的Android Studio?

我的构建在Android Studio中需要很长时间,超过2分钟,有时3分钟.我尝试了StackOverflow中解释的一些方法来加速构建时间,但它并没有解决我的问题.

app模块的build.gradle代码如下:

buildscript {
    repositories {
        maven { url 'https://maven.fabric.io/public' }
    }

    dependencies {
        classpath 'io.fabric.tools:gradle:1.+'
    }
}
apply plugin: 'com.android.application'
apply plugin: 'io.fabric'

repositories {
    maven { url 'https://maven.fabric.io/public' }
}

// Adding The GIT SHA to Crashlytics crash reporting
def gitSha = 'git rev-parse --short HEAD'.execute([], project.rootDir).text.trim()

android {
    compileSdkVersion 22
    buildToolsVersion "22.0.1"

    defaultConfig {
        applicationId "com.moymer"
        minSdkVersion 11
        targetSdkVersion 22
        multiDexEnabled true
        versionCode 5
        versionName "2.0.0"

        buildConfigField "String", "GIT_SHA", "\"${gitSha}\""
    }
    buildTypes {
        release {
            minifyEnabled …
Run Code Online (Sandbox Code Playgroud)

android build gradle android-studio

3
推荐指数
1
解决办法
1605
查看次数

如果发现条件为真,如何覆盖方法?

在我的MainActivity类中,attachBaseContext如果在我的视图中按下按钮,我想停止覆盖该方法.

情况如下:

public class MainActivity extends AppCompatActivity {
    boolean value = true;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        //setting content view and stuff
    }

    //the following should be overridden only if value == true. 
    //I can change the value to false by clicking a button in my view.
    @Override
    protected void attachBaseContext(Context base) {
        super.attachBaseContext(ZeTarget.attachBaseContext(base,this));
    }

    public void stopOverriding (View view) {
        value = false;
    }
Run Code Online (Sandbox Code Playgroud)

在我看来,我的主活动布局中有一个按钮,可以stopOverriding()在单击时调用该方法:

<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/button"
android:onclick="stopOverriding"
android:text="@string/change"/>
Run Code Online (Sandbox Code Playgroud)

在我的attachBaseContext() …

java android

3
推荐指数
1
解决办法
1835
查看次数