【问题标题】:how can I finish activity from view如何从视图中完成活动
【发布时间】:2013-07-14 11:42:19
【问题描述】:

我有一个具有自定义视图的活动。

我必须添加活动结果:

    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...>
    }
}

查看类:

public class VDrawTimeLine extends View implements OnTouchListener{
<...code...>
public VDrawTimeLine(Context context, ArrayList<_MainData> contentFull) {
        super(context);
        this.con = context;
        this.content = contentFull;
        <...code...>
    }
}
@Override
    public boolean onTouch(View v, MotionEvent event) {
        // TODO Auto-generated method stub
        finishFunction();//I need here finish event this activity result for ActView Activity.
        return true;
    }

finishFunction - 我必须在这里写什么来完成带有父活动结果的 ActView?

我需要这样的东西:

Intent intent = new Intent();
    intent.putExtra(dataname, value);
    setResult(RESULT_OK,intent);
    finish();

【问题讨论】:

    标签: java android view


    【解决方案1】:

    由于您使用的 Context 是 Activity 的 Activitys context, you can cast the views 上下文并在其上调用 finish()。

    例如:

    private void finishFunction() {
       Activity activity = (Activity)getContext();
       activity.finish();
    }
    

    从设计的角度来看,这可能不是最好的选择

    【讨论】:

    • 谢谢。它给了我想要的东西。可能有些复杂,但它确实有效。
    【解决方案2】:

    如何在 Android Kotlin 的 MVVM 数据绑定中从 View Model 类中关闭 Activity。

    您应该从下面的活动中传递视图模型类中的上下文/活动引用

    private lateinit var registerViewModel: RegisterViewModel
    

    在创建方法上初始化它

    registerViewModel = RegisterViewModel(this)
    

    RegisterViewModel 类扩展为 BaseObservable()

    在下面编写代码以关闭按钮单击时的活动

    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" />
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2012-03-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多