Java 如何从视图中完成活动
我有一个自定义视图的活动 我必须添加活动结果:Java 如何从视图中完成活动,java,android,view,Java,Android,View,我有一个自定义视图的活动 我必须添加活动结果: public class ActView extends Activity implements OnClickListener { <...code...> @Override protected void onCreate(Bundle savedInstanceState) { <...code...> layout = (LinearLayout) findViewById(R.id
public class ActView extends Activity implements OnClickListener {
<...code...>
@Override
protected void onCreate(Bundle savedInstanceState) {
<...code...>
layout = (LinearLayout) findViewById(R.id.chart_container);
timelineview = new VDrawTimeLine(this,contentFull);
timelineview.setLayoutParams(new LayoutParams(LayoutParams.MATCH_PARENT, LayoutParams.MATCH_PARENT));
timelineview.setBackgroundColor(0xffffffff);
timelineview.setVisibility(View.VISIBLE);
layout.addView(timelineview);
<...code...>
}
}
由于您使用的
上下文是活动的上下文,因此可以将视图的上下文强制转换为活动,并调用finish()
例如:
private void finishFunction() {
Activity activity = (Activity)getContext();
activity.finish();
}
从设计角度来看,在Android Kotlin的MVVM数据绑定中如何从视图模型类关闭活动可能不是最佳选择
您应该从活动中传递视图模型类中的context/acitivity引用,如下所示
private lateinit var registerViewModel: RegisterViewModel
在创建方法时初始化它
registerViewModel = RegisterViewModel(this)
扩展到BaseObservable()的RegisterViewModel类
在下面编写代码,以便在单击按钮时关闭活动
fun handleOnClick(view: View) {
when (view.id) {
R.id.registerBTN -> {
val activity = context as Activity
activity.finish()
}
else -> Toast.makeText(context, "To-DO", Toast.LENGTH_SHORT).show()
}
}
您可以在layout.xml文件中定义,如下所示
<Button
android:id="@+id/registerBTN"
style="@style/Widget.AppCompat.Button.Colored"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:enabled="@{registerViewModel.isAllowRegister}"
android:layout_marginVertical="32dp"
android:text="@string/register"
android:onClick="@{registerViewModel::handleOnClick}"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@+id/passwordET" />
谢谢。它给了我想要的。可能有点复杂,但它是有效的。
fun handleOnClick(view: View) {
when (view.id) {
R.id.registerBTN -> {
val activity = context as Activity
activity.finish()
}
else -> Toast.makeText(context, "To-DO", Toast.LENGTH_SHORT).show()
}
}
<Button
android:id="@+id/registerBTN"
style="@style/Widget.AppCompat.Button.Colored"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:enabled="@{registerViewModel.isAllowRegister}"
android:layout_marginVertical="32dp"
android:text="@string/register"
android:onClick="@{registerViewModel::handleOnClick}"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@+id/passwordET" />