android-使用mvvp结构中的数据绑定导航到另一个活动

android-使用mvvp结构中的数据绑定导航到另一个活动,第1张

概述我正在学习数据绑定库,对此我是全新的.我的问题是如何导航到有关数据绑定的其他活动.我可以像在MVC中一样执行此 *** 作,还是必须将代码放在ViewModel中.请帮我.这是我的代码.活动:publicclassSplashActivityextendsAppCompatActivityimplementsObserver{@Overrideprote

我正在学习数据绑定库,对此我是全新的.我的问题是如何导航到有关数据绑定的其他活动.

我可以像在MVC中一样执行此 *** 作,还是必须将代码放在viewmodel中.请帮我.

这是我的代码.

活动:

public class SplashActivity extends AppCompatActivity implements Observer {@OverrIDeprotected voID onCreate(Bundle savedInstanceState) {    super.onCreate(savedInstanceState);    initDataBinding();    initVIEws();}private voID initVIEws() {    findVIEwByID(R.ID.guest_button).setonClickListener(new VIEw.OnClickListener() {        @OverrIDe        public voID onClick(VIEw v) {            startActivity(new Intent(SplashActivity.this,GameActivity.class));        }    });}private voID initDataBinding() {    ActivitySplashBinding activitySplashBinding = DataBindingUtil.setContentVIEw(this, R.layout.activity_splash);    Splashviewmodel splashviewmodel = new Splashviewmodel();    activitySplashBinding.setSplashviewmodel(splashviewmodel);    splashviewmodel.addobserver(this);}@OverrIDepublic voID update(Observable observable, Object data) {}}

XML:

<?xml version="1.0" enCoding="utf-8"?><layout xmlns:androID="http://schemas.androID.com/apk/res/androID"    xmlns:app="http://schemas.androID.com/apk/res-auto"    xmlns:tools="http://schemas.androID.com/tools"    tools:context="com.sevenbits.androID.mvvmsample.vIEw.SplashActivity"><data>    <variable name="splashviewmodel"              type="com.sevenbits.androID.mvvmsample.viewmodel.Splashviewmodel"/></data><androID.support.constraint.ConstraintLayout    androID:ID="@+ID/parent1"    androID:layout_wIDth="match_parent"    androID:layout_height="match_parent"    androID:background="@drawable/splash_bg">    <button androID:layout_wIDth="wrap_content"            androID:layout_height="wrap_content"            androID:background="@androID:color/transparent"            androID:gravity="center"            androID:text="Login"            androID:textcolor="@color/white"            androID:textSize="24sp"            androID:ID="@+ID/login_button"            app:layout_constraintBottom_totopOf="@+ID/parent1"            app:layout_constraintleft_toleftOf="parent"            app:layout_constraintRight_toRightOf="parent"            app:layout_constrainttop_totopOf="@ID/parent1"            app:layout_constraintVertical_bias="0.42"/>    <button androID:layout_wIDth="wrap_content"            androID:layout_height="wrap_content"            androID:background="@androID:color/transparent"            androID:gravity="center"            androID:text="Sign Up"            androID:textcolor="@color/white"            androID:textSize="24sp"            androID:ID="@+ID/sign_up_button"            app:layout_constraintBottom_totopOf="@+ID/parent1"            app:layout_constraintleft_toleftOf="parent"            app:layout_constraintRight_toRightOf="parent"            app:layout_constrainttop_totopOf="@ID/parent1"            app:layout_constraintVertical_bias="0.58"/>    <button androID:layout_wIDth="wrap_content"            androID:layout_height="wrap_content"            androID:background="@androID:color/transparent"            androID:textcolor="@color/white"            androID:textAllCaps="false"            androID:textSize="18sp"            androID:ID="@+ID/guest_button"            androID:layout_marginBottom="20dp"            androID:text="Play As a Guest User"            app:layout_constraintleft_toleftOf="parent"            app:layout_constraintRight_toRightOf="parent"            app:layout_constraintBottom_toBottomOf="parent"    /></androID.support.constraint.ConstraintLayout></layout>

我需要在视图模型中放置onclick代码吗?如果是,那么该怎么办?

解决方法:

好吧,这确实取决于用例,但理想情况下,每个 *** 作都应通过viewmodel.

如果您需要在导航前做一些事情(例如存储数据),则单击 *** 作应来自viewmodel.如果只需要重定向,则可以采用MVC方式.

我通常以这种方式这样做:

Splashviewmodel.java

public static final int ACTION_NAVIGATE_TO_GAME = 1000;public voID navigatetoGame() {    // You can do some work here before notifying the vIEw about redirection    setChanged();    notifyObserver(ACTION_NAVIGATE_TO_GAME);}

SplashActivity.java

@OverrIDepublic voID update(Observable observable, Object data) {    if (data instanceof Integer) {        int value = (int) data;        switch(value) {           case Splashviewmodel.ACTION_NAVIGATE_TO_GAME:                startActivity(new Intent(SplashActivity.this,GameActivity.class));                break;        }    }}

并在布局文件中

<button androID:layout_wIDth="wrap_content"            androID:layout_height="wrap_content"            androID:background="@androID:color/transparent"            androID:textcolor="@color/white"            androID:textAllCaps="false"            androID:textSize="18sp"            androID:ID="@+ID/guest_button"            androID:layout_marginBottom="20dp"            androID:text="Play As a Guest User"            androID:onClick="@{() -> splashviewmodel.navigatetoGame()}"            app:layout_constraintleft_toleftOf="parent"            app:layout_constraintRight_toRightOf="parent"            app:layout_constraintBottom_toBottomOf="parent"    />
总结

以上是内存溢出为你收集整理的android-使用mvvp结构中的数据绑定导航到另一个活动全部内容,希望文章能够帮你解决android-使用mvvp结构中的数据绑定导航到另一个活动所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址:https://www.54852.com/web/1080728.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2022-05-27
下一篇2022-05-27

发表评论

登录后才能评论

评论列表(0条)

    保存