我花了很多时间试图弄清楚为什么在下面的代码中(接近结尾),我在 ViewModelProvider(this) 上遇到错误。我也试过 getActivity() 而不是 'this',同样的问题。我得到的错误是“无法解析构造函数......”
import androidx.fragment.app.Fragment;
import androidx.lifecycle.ViewModelProvider;
public class ItemSetupFragment extends Fragment {
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
View view = inflater.inflate(R.layout.fragment_setup, container, false);
return view;
}
@Override
public void onViewCreated(@NonNull View view, Bundle savedInstanceState) {
super.onViewCreated(view, savedInstanceState);
ItemSetupFragmentModel model = new ViewModelProvider(this).get(ItemSetupFragmentModel.class);
model.getKids().observe(this, users -> {
// update UI
});
}
}
Run Code Online (Sandbox Code Playgroud)
android android-mvvm android-livedata android-architecture-components
我正在尝试在我的Android应用上实施Google帐户登录,并在我的节点服务器中对其进行身份验证.
我按照本教程成功实现了Android上的Google登录按钮,但我知道我不知道如何在后端进行身份验证.
从这个文件我假设我需要得到并发送getIdToken()
或getServerAuthCode()
但我不知道我应该发送哪一个,所以投票发送getServerAuthCode()
.
在我的节点服务器部分,我安装了这个库并使用了这个方法:
var google = require('googleapis');
var plus = google.plus('v1');
var OAuth2 = google.auth.OAuth2;
var oauth2Client = new OAuth2(CLIENT_ID, CLIENT_SECRET, REDIRECT_URL);
// Retrieve tokens via token exchange explained above or set them:
oauth2Client.setCredentials({
access_token: 'ACCESS TOKEN HERE',
refresh_token: 'REFRESH TOKEN HERE'
});
plus.people.get({
userId: 'me',
auth: oauth2Client },
function(err,response) { // handle err and response });
Run Code Online (Sandbox Code Playgroud)
我认为这是正确的方法,但后来我发现了这一点,我意识到返回的数据getServerAuthCode()
需要交换真实访问令牌才能从用户那里获取信息.
我的问题是:
1)我应该从Android向Node发送哪些数据?(在Node上我得到一些基本信息,如电子邮件和用户名).
2)如果我发送正确的数据,我用于Node的库是正确的吗?如果我没有发送正确的数据,你建议我验证哪个库getIdToken()
. …
例如,在 Facebook 应用程序中,我使用互联网连接登录。然后我关闭应用程序,关闭互联网并关闭我所有的系统选项卡。然后即使我的互联网连接关闭,我看到之前加载的图像和数据仍然保留。
Facebook 应用程序如何做到这一点?如果想在我的 Android 应用程序中实现这样的功能,我该怎么办?
我有一个数组对象,在该数组对象中,我需要根据isVerfied
属性过滤并创建一个数组。
如果isVerfied
属性为真,我只需要推送对象的 name 属性而不是将整个对象推送到数组中
我试过这个,但它似乎没有工作,因为它正在推动整个对象。
const users = [
{
name: 'Varun',
age: '18',
isVerfied: 'true'
},
{
name: 'Rahul',
age: '12',
}
]
const verfiedUserNameNew = users.filter(user => {
if (user.isVerfied) return user.name
})
console.log(verfiedUserNameNew)
Run Code Online (Sandbox Code Playgroud)
我也试过地图
const users = [
{
name: 'Varun',
age: '18',
isVerfied: 'true'
},
{
name: 'Rahul',
age: '12',
},
]
const verfiedUserNameNew = users.map(user => {
if (user.isVerfied) return user.name
})
console.log(verfiedUserNameNew)
Run Code Online (Sandbox Code Playgroud)
但随后它返回 varun 和 undefined。我知道另一种解决方案是创建一个数组并运行一个 for.Each 循环,在该循环中放置一个 if 条件,然后将元素推入一个数组中 …
我目前正在编写一个用于学习目的的 react + Firebase 项目,我想知道我应该采用哪种方法来有效地读取 Firebase。
假设我有一个名为 product 的只读集合,其中包含大约 5000 个文档,因此当用户访问我的 react 应用程序时,每次访问将收取 5000 次读取费用。
由于如果用户垃圾邮件刷新以响应应用程序,这会相当快地消耗读取计数,是否有任何正确的方法可以从 firebase firestore 读取数据?
将产品信息存储在 localstorage 中
使用来自 firebase 的 SOURCE.CACHE
限制读取查询?
这是我目前能想到的,如果您的应用程序构建设计中有任何黄金标准或程序,请告诉我。
谢谢你。
我正在关注关于flutter的udemy课程(https://www.udemy.com/learn-flutter-dart-to-build-ios-android-apps),并使用scoped_model进行状态管理。我想从产品列表中编辑产品。为此,我将产品 ID 设置为标志 - 范围模型中的 selectedProductId。提交时,我想导航离开并将此 selectedProductId 设置为 null。
//method to edit product
editProduct(productId, newValues);
Navigator.pushReplacementNamed(context, '/productsPage').then((_){
debugger();
setSelectedProductId(null);
}).catchError((err){print(err);});
Run Code Online (Sandbox Code Playgroud)
调试器永远不会被命中。并且也没有错误。
我尝试使用异步等待,但仍然没有用。
editProduct(editableProductId, _formData);
await Navigator.pushReplacementNamed(context, '/productsPage').catchError((err){print(err);});
debugger();
setSelectedProductId(null);
Run Code Online (Sandbox Code Playgroud)
页面被导航到给定的路线,但后面的行永远不会执行。我什至尝试使用pushNamed
而不是pushReplacementNamed
.
我知道pushReplacementNamed
返回一个未来,所以必须调用 .then(),但似乎没有发生,我错过了什么吗?还有其他我应该了解的因素或情况吗?
android ×3
android-architecture-components ×1
android-mvvm ×1
arrays ×1
dart ×1
firebase ×1
flutter ×1
javascript ×1
node.js ×1
reactjs ×1