小编You*_*ode的帖子

在Android应用中使用Firebase(BaaS)存储电子邮件和密码时,如何包含用户名?

Firebase createUser()方法需要一个电子邮件和密码字段,但是如果我还想让用户使用类似于Snapchat,Instagram,StackOverflow等的自定义用户名呢?是否有任何方法可以修改现有方法以接受该字段,或者我是否需要手动推送和管理此信息,如果是这样的话?

这是我第一次尝试存储所需的用户信息:

Firebase ref = new Firebase(firebaseURL);
ref.createUser(email, password, new Firebase.ValueResultHandler<Map<String, Object>>() {
@Override
public void onSuccess(Map<String, Object> result) {
System.out.println("Successfully created user account with uid: " + result.get("uid"));

//Sign user in
Firebase ref = new Firebase(firebaseURL);
ref.authWithPassword(email, password, new Firebase.AuthResultHandler() {

@Override
public void onAuthenticated(AuthData authData) {
System.out.println("User ID: " + authData.getUid() + ", Provider: " + authData.getProvider());

//Save user info
Firebase userRef = new Firebase(firebaseURL + "Users/");
User user = new User(username, authData.getUid());
userRef.setValue(user);
Run Code Online (Sandbox Code Playgroud)

这是好习惯吗?我想用存储用户名的UID可以帮助我将来处理更改等.另外,我应该实现updateChildren() …

android firebase firebase-authentication firebase-realtime-database

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

是否有任何方法使Snackbar在活动变化中持续存在?

虽然Snackbar很漂亮,但在改变活动时它并不存在.Snackbar在完成活动之前我想确认使用a发送消息的情况下,这是一个无聊的事情.我已经考虑在退出活动之前暂停代码,但发现这是一个不好的做法.

如果我所描述的是不可能的,是否有任何类型的材料设计敬酒消息?或者制作矩形吐司消息的方法; 一个半径较小的圆边?

android android-studio

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

即使RecyclerView.findViewHolderForAdapterPosition()在该位置返回null,也不会在视图位置调用onBindViewHolder()

我有一个包含13个项目的列表(虽然可以添加或删除项目),位置0-12.当首次显示包含RecyclerView的片段时,用户只能看到位置0到7(位置7只有一半可见).在我的适配器中,Log每次视图持有者被绑定/绑定(如果语法适用于此,则为idk)并记录其位置.

适配器

@Override
public void onBindViewHolder(final ViewHolder holder, final int position) {
    Log.d(TAG, "onBindViewHolder() position: " + position);
    ...
}
Run Code Online (Sandbox Code Playgroud)

从我Log看到0-7的位置是绑定的:

从适配器登录

我有一个selectAll()方法,ViewHolder通过适配器位置获取每个.如果返回holder的不是null我,则使用返回holder来更新视图以显示它已被选中.如果返回的持有者是null我调用selectOnBind()一个方法来标记该位置的视图更新,以显示它在绑定时被选中而不是实时,因为它当前未显示:

public void selectAll() {
    for (int i = 0; i < numberOfItemsInList; i++) {
        MyAdapter.ViewHolder holder = (MyAdapter.ViewHolder)
                mRecyclerView.findViewHolderForAdapterPosition(i);

        Log.d(TAG, "holder at position " + i + " is " + holder);

        if (holder != null) {
            select(holder);
        } else …
Run Code Online (Sandbox Code Playgroud)

android android-viewholder recycler-adapter android-recyclerview

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

什么时候将数据保存到内部缓存目录?

我通过Android开发者阅读文档的保存数据,他们提到,将文件保存到内部存储时,您可以使用getFilesDir()getCacheDir()。什么时候保存到缓存目录比较合适,什么类型的数据最好保存在这里?

android caching android-studio

5
推荐指数
2
解决办法
5768
查看次数

如何在MainActivity和Fragment中正确获取WifiManager的实例

根据WifiManager的Android文档,您:

通过调用Context.getSystemService(Context.WIFI_SERVICE)获取此类的实例.


FragmentMainActivity调用中:

WifiManager wifiManager = Context.getSystemService(Context.WIFI_SERVICE);
Run Code Online (Sandbox Code Playgroud)

返回错误:

无法从静态上下文引用非静态方法'getSystemService(java.lang.String)'.


MainActivity调用中:

WifiManager wifiManager = (WifiManager) getSystemService(Context.WIFI_SERVICE);
Run Code Online (Sandbox Code Playgroud)

但是,为什么文档说不然呢?

有人可以帮助我理解为什么我们不再需要前缀Context,getSystemService()即使该方法属于Context该类.另外我们为什么要施展(WifiManager)?这个解释对我有很大的帮助,因为这不是第一次有效的方法与文档规定的不同.


Fragment中调用相同的:

WifiManager wifiManager = (WifiManager) getSystemService(Context.WIFI_SERVICE);
Run Code Online (Sandbox Code Playgroud)

返回错误:

无法解析方法'getSystemService(java.lang.String)'


由于我在上一篇文章中描述的问题,我希望能够在片段中获取实例.


java android wifimanager android-fragments android-studio

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

Android列表(ArrayList,List等):addAll()vs重新定义引用

如果我有类似的东西:

ArrayList<Data> mList = new ArrayList();

...

public void setList(ArrayList<Data> list) {
    mList = list;
}


public void updateList(ArrayList<Data> list) {
    mList.clear();
    mList.addAll(list);
}
Run Code Online (Sandbox Code Playgroud)

哪个更有效,setList()或者updateList()为什么?什么是最佳做法?

编辑:

不要混淆这个问题.

java performance android list arraylist

0
推荐指数
1
解决办法
470
查看次数