
我正在学习数据绑定库,对此我是全新的.我的问题是如何导航到有关数据绑定的其他活动.
我可以像在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结构中的数据绑定导航到另一个活动所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)