小编Pra*_*ina的帖子

Android ViewModel没有零参数构造函数

我正在关注文档以了解LiveData和ViewModel.在doc中,ViewModel类具有构造函数,

public class UserModel extends ViewModel {
  private MutableLiveData<User> user;

  @Inject UserModel(MutableLiveData<User> user) {
    this.user = user;
  }

  public void init() {
    if (this.user != null) {
      return;
    }
    this.user = new MutableLiveData<>();
  }

  public MutableLiveData<User> getUser() {
    return user;
  }
}
Run Code Online (Sandbox Code Playgroud)

但是,当我运行代码时,我得到异常:

final UserViewModelviewModel = ViewModelProviders.of(this).get(UserViewModel.class);
Run Code Online (Sandbox Code Playgroud)

引起:java.lang.RuntimeException:无法创建类UserViewModel的实例引起:java.lang.InstantiationException:java.lang.Class没有零参数构造函数

android mvvm android-architecture-components

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

使用android espresso,如何访问第二个活动的视图?

我从 LoginActivity 开始,登录后,我的应用程序使用 RecyclerView 转到下一个 Activity。我需要参考 Recycler View。我正在这样做,但得到null

RecyclerView recyclerView = (RecyclerView) loginActivity.getActivity().findViewById(R.id.messages_list);
Run Code Online (Sandbox Code Playgroud)

它为空,因为 loginActivity 不包含 RecyclerView。所以,我的问题是,一旦我转到第二个活动,我该如何告诉 espresso 用新活动替换 loginActivity 以便我可以做到这一点

  RecyclerView recyclerView = (RecyclerView) currentActivity.getActivity().findViewById(R.id.messages_list);
Run Code Online (Sandbox Code Playgroud)

如果这是不可能的,还有什么其他方法?

android automated-tests android-espresso

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

Mockwebserver 的 url 不能更改吗?

我正在使用mockwebserver进行android测试。我可以通过执行以下操作来模拟使用改造的网络服务

 NetworkServiceHelper.init(String.valueOf(server.url("/")));
Run Code Online (Sandbox Code Playgroud)

但是,我无法模拟其他 SDK(例如具有基本 url https://api.layer.com/apps/的 Atlas-Layer)发出的 Web 请求。

我执行了以下操作,但请求计数仍然为 0。

MockWebServer mockWebServer = new MockWebServer();
mockWebServer.url("https://api.layer.com/apps");
mockWebServer.enqueue(new MockResponse().setBody(getStringFromFile(getInstrumentation().getContext(), "temp.json")));
getConversation("demo", "asdf"); // makes web service all using Layer SDK
mockWebServer.getRequestCount(); // Returns 0 instead of 1
Run Code Online (Sandbox Code Playgroud)

mocking android-testing mockwebserver

5
推荐指数
0
解决办法
1312
查看次数

单击按钮时的Android ViewModel LiveData更新视图

我正在学习本教程以学习ViewModel和LiveData.在我的情况下,我只是在按钮点击时生成随机字符串并尝试更新文本视图,而不是从网络获取数据.问题是当按钮单击更改数据时,textview不会更新,但只有在切换方向时才会更新.

活动类(扩展LifecycleActivity)

public class PScreen extends BaseActivity {
  @Override protected void onCreate(@Nullable Bundle savedInstanceState) {

super.onCreate(savedInstanceState);
setContentView(R.layout.places_screen);

final UserModel viewModel = ViewModelProviders.of(this).get(UserModel.class);
viewModel.init();

viewModel.getUser().observe(this, new Observer<User>() {
  @Override public void onChanged(@Nullable User user) {
    ((TextView) findViewById(R.id.name)).setText(user.getName());
  }
});

findViewById(R.id.button).setOnClickListener(new View.OnClickListener() {
  @Override public void onClick(View v) {
    final MutableLiveData<User> data = new MutableLiveData<>();
    User user = new User();
    user.setName(String.valueOf(Math.random() * 1000));
    data.postValue(user);
    viewModel.setUser(data); // Why it does not call observe()
  }
});
  }
}
Run Code Online (Sandbox Code Playgroud)

ViewModel类

package timsina.prabin.tripoptimizer.model;

import …
Run Code Online (Sandbox Code Playgroud)

android mvvm android-architecture-components

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

在运行测试之前,Android gradle跳过构建?

我想跳过构建过程并直接运行测试

./gradlew connectedDevDebug
Run Code Online (Sandbox Code Playgroud)

我也可以使用adb命令,但它一次只能在一个deivce上运行测试.

gradle android-testing android-gradle-plugin

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