标签: android

Dagger 2每个片段的自定义范围(或活动等...)

我看了几篇不同的文章,似乎提出了在Dagger 2中进行自定义范围的两种不同方式:

  1. 存活配置改变第2部分的MVP演示者(Github repo):

    • 采用独特的定制范围的每个片段,例如@Hello1Scope@Hello2ScopeHello1FragmentHello2Fragment分别
  2. 在Android上品尝Dagger 2:

    • 对所有片段使用单个自定义范围,例如@PerFragment.

根据我的理解,似乎在方法2中,定义一个可用于所有片段(即@PerFragment)的单一范围应该是可以的.事实上(如果我错了请纠正我),似乎自定义范围的名称是无关紧要的,并且它只是创建子组件(即在应用程序,活动或片段中)的重要部分.

是否有任何用例来定义每个片段的唯一范围,例如在案例1中?

android android-fragments dagger-2

35
推荐指数
2
解决办法
2万
查看次数

TextInputLayout中的错误文本由键盘覆盖

TextInputLayout包含一个EditText,后者又接收来自用户的输入.使用Android设计支持库中引入的TextInputLayout,我们应该将错误设置为持有EditText而不是EditText本身的TextInputLayout.编写UI时,将只关注EditText而不是整个TextInputLayout,这可能导致键盘覆盖错误.在以下GIF通知中,用户必须先删除键盘才能看到错误消息.这与设置IME动作以使用键盘继续前进相结合会导致真正令人困惑的结果.

示例错误

布局xml代码:

<android.support.design.widget.TextInputLayout
    android:id="@+id/uid_text_input_layout"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    app:errorEnabled="true"
    android:layout_marginTop="8dp">

    <EditText
        android:id="@+id/uid_edit_text"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:singleLine="true"
        android:hint="Cardnumber"
        android:imeOptions="actionDone"/>

</android.support.design.widget.TextInputLayout>
Run Code Online (Sandbox Code Playgroud)

Java代码将错误设置为TextInputLayout:

uidTextInputLayout.setError("Incorrect cardnumber");
Run Code Online (Sandbox Code Playgroud)

如何在用户没有看到错误消息的情况下确保错误消息可见?有可能移动焦点吗?

android android-layout android-design-library androiddesignsupport android-textinputlayout

35
推荐指数
2
解决办法
5801
查看次数

Snackbar动作文本颜色不变

我想更改我的零食栏的动作文字颜色,但由于某种原因它不起作用.

我使用以下代码显示快餐栏:

Snackbar.make(findViewById(R.id.root), "text", Snackbar.LENGTH_LONG).setActionTextColor(R.color.yellow).setAction("OK", new View.OnClickListener() {
    @Override
    public void onClick(View view) {
    }
}).show();
Run Code Online (Sandbox Code Playgroud)

android colors android-design-library android-snackbar androiddesignsupport

35
推荐指数
3
解决办法
2万
查看次数

DVM和ART有什么区别?为什么DVM在Lollipop中被正式替换为ART?

自Android Lollipop以来,Google已经用ART代替了DVM,因为ART比DVM更快.还有其他原因吗?

java android dalvik

35
推荐指数
2
解决办法
2万
查看次数

Glide听众不起作用

我正在使用Glide加载图像,我添加了一个监听器,以了解资源何时准备好或是否存在任何类型的错误:

Glide.with(mContext)
    .load(url)
    .placeholder(R.drawable.glide_placeholder)
    // use dontAnimate and not crossFade to avoid a bug with custom views
    .dontAnimate()
    .diskCacheStrategy(DiskCacheStrategy.ALL)
    .listener(new RequestListener<String, GlideDrawable>() {
        @Override
        public boolean onException(Exception e, String model, Target<GlideDrawable> target, boolean isFirstResource) {
            // do something
            return true;
        }

        @Override
        public boolean onResourceReady(GlideDrawable resource, String model, Target<GlideDrawable> target, boolean isFromMemoryCache, boolean isFirstResource) {
            // do something
            return true;
         }
    })
    .into(mCustomImageView);
Run Code Online (Sandbox Code Playgroud)

该应用程序永远不会在内部运行onResourceReady,onException但如果我删除了侦听器并让异步下载没有回调,它运行正常:

Glide.with(mContext)
    .load(url)
    .placeholder(R.drawable.glide_placeholder)
    // use dontAnimate and not crossFade to avoid a …
Run Code Online (Sandbox Code Playgroud)

android callback imageview android-glide

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

35
推荐指数
5
解决办法
6万
查看次数

向下滚动时,RecyclerView项目之间形成较大的间隙

我正在制作ToDo列表应用程序,并且在测试时,出于某种原因,每当我尝试向下滚动时,项目之间会形成巨大的差距.每当我拖放项目时总会发生这种情况,但我没有看到我的ItemTouchHelper适配器和回调类有任何错误.如果你可以帮助我,那将是非常棒的.

之前: 之前

后: 后

RecyclerAdapter.java

public class RecyclerAdapter extends                                                                                                                                 

RecyclerView.Adapter<RecyclerAdapter.RecyclerVH> implements ItemTouchHelperAdapter{
private LayoutInflater layoutInflater;
ArrayList<Info> data;
Context context;

public RecyclerAdapter(Context context) {
    layoutInflater = LayoutInflater.from(context);
    this.context = context;
}

public void setData(ArrayList<Info> data) {
    this.data = data;
    notifyDataSetChanged();
}

@Override
public RecyclerVH onCreateViewHolder(ViewGroup viewGroup, int position) {
    View view = layoutInflater.inflate(R.layout.custom_row, viewGroup, false);
    view.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            Log.d("R.A onClick Owen", "onClick method triggered");
        }
    });
    RecyclerVH recyclerVH = new RecyclerVH(view);
    return recyclerVH;
}

@Override
public …
Run Code Online (Sandbox Code Playgroud)

android android-scrollview android-recyclerview

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

如何捕获Firebase Auth特定的异常

使用Firebase,如何捕获特定异常并优雅地告诉用户?例如:

FirebaseAuthInvalidCredentialsException:电子邮件地址格式错误.

我正在使用下面的代码使用电子邮件和密码注册用户,但我不是那么高级的java.

mAuth.createUserWithEmailAndPassword(email, pwd)
    .addOnCompleteListener(this, new OnCompleteListener<AuthResult>() {

    @Override
    public void onComplete(@NonNull Task<AuthResult> task) {
        if (!task.isSuccessful()) {
            //H.toast(c, task.getException().getMessage());
            Log.e("Signup Error", "onCancelled", task.getException());
        } else {
            FirebaseUser user = mAuth.getCurrentUser();
            String uid = user.getUid();
        }
    }    
});
Run Code Online (Sandbox Code Playgroud)

java android exception firebase firebase-authentication

35
推荐指数
7
解决办法
3万
查看次数

Calender.getInstance()在Android Studio中出错

DatePicker当我EditText点击时,我正试图弹出一个对话框.问题是,当我尝试Calender使用Calender.getInstance()下面出现的令人毛骨悚然的红色下划线来实例化我的对象时getInstance().

Calender myCalender = Calender.getInstance();
Run Code Online (Sandbox Code Playgroud)

它悬停在它上面,它说

呼叫需要API级别24(当前最小值为15).

显然,我希望我的应用程序能够在最低API级别15的设备上运行.请帮助我,我是Android的新手.谢谢.

我试图按照这种方法将DatePicker添加到我的EditText

java android android-datepicker android-calendar

35
推荐指数
1
解决办法
2万
查看次数

RxJava 2.x:我应该使用Flowable还是Single/Completable?

我正在使用Clean Architecture开发Android应用程序,我正在将其迁移到RxJava 2.x. 我必须向soap服务发出一些网络请求,所以我在域模块中定义了api接口:

public interface SiginterApi {
    Observable<User> login(String user, String password);
    ...
    Observable<List<Campaign>> getCampaigns(List<Long> campaignIds);
}
Run Code Online (Sandbox Code Playgroud)

我已经读过网络请求应该用" Flowable"进行,因为背压管理是因为它是'冷可观察'.在另一方面,我知道请求的结果将是成功的(与响应)或错误,所以我不知道我是否应该使用FlowableSingle甚至Observable.

此外,我有这样的数据库访问:

public interface UserRepository extends Repository {
    Observable<Void> saveUser(String username, String hashedPassword, boolean logged, User user);
    ...
    Observable<User> findUser(String username, String hashedPassword);
}
Run Code Online (Sandbox Code Playgroud)

我不知道我是否应该使用Completable/ Flowable/ ObservablesaveUser方法和Single/ Flowable/ ObservablefindUser方法.

java android reactive-programming rx-java2

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