相关疑难解决方法(0)

从Activity上下文外部调用startActivity()

ListView在我的Android应用程序中实现了一个.我ListView使用类的自定义子类绑定到此ArrayAdapter.在重写ArrayAdapter.getView(...)方法中,我指定了一个OnClickListener.在onClick方法中OnClickListener,我想发布一个新活动.我得到了例外:

Calling startActivity() from outside of an Activity  context requires the  
FLAG_ACTIVITY_NEW_TASK flag. Is this really what you want?
Run Code Online (Sandbox Code Playgroud)

我怎样才能获得ContextListView(当前Activity)下工作?

android android-context android-activity

339
推荐指数
9
解决办法
22万
查看次数

应该在MVVM中的Activity/Fragment和ViewModel中做什么

我们公司一直在使用MVP模式开发Android应用程序.使用MVP,我们将所有业务逻辑放在演示者中,然后Activity/Fragment负责在从演示者接收事件回调时查看更新.

现在,我们决定使用Android Databinding尝试MVVM.看来,使用MVVM,我们可以将所有业务逻辑放在ViewModel中(就像MVP中的Presenter一样),并且还可以在一个对象中通知数据模型的任何更改视图.

但是,在我们的脑海中,这提出了一个问题,我们应该由Activity/Fragment处理什么?因为我们采用MVP模式来避免脂肪活动/碎片.我们不希望有苗条活动/片段,然后是胖视图模型.

到目前为止,我们认为我们可以通过Activity/Fragment来处理这些问题

  • 请求/检查权限
  • 访问上下文
  • 访问资源

每个更正,评论或建议都是受欢迎的,因为我对MVVM很新,即使它似乎与MVP类似.

谢谢.

还有一点问题

将MVVM与监听器(如MVP)结合起来是否可能并且是一种好的做法?例如

public class MainActivityViewModel extends BaseObservable {

    MainActivityViewModelListener listener;
    User user;

    public void setMainActivityViewModelListener(MainActivityViewModelListener listener) {
        this.listener = listener;
    }

    public void refreshUser(View v) {
        // some user update via Internet
        notifyPropertyChanged(BR.userAlias);

        if (listener != null) {
            listener.onUserRefreshed(user);
        }
    }

    @Bindable
    public void getUserAlias() {
        return user.getAlias();
    }
}

public interface MainActivityViewModelListener {
    void onUserRefreshed(User user);
}

public class MainActivity implements MainActivityViewModelListener { …
Run Code Online (Sandbox Code Playgroud)

java android mvvm android-databinding

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