将值从View类传递到活动类?

时间:2018-02-25 13:59:02

标签: android

我有这个迷你游戏和两个活动。我使用了一个意图命令我的应用程序从活动1(只是一个菜单屏幕)转到活动2. 然而,我想将游戏得分从活动2返回到活动1,当gameIsOver时,但我的第二项活动是:

公共类MainActivity扩展了AppCompatActivity {

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(new DrawView (this));

}

}

所以我的活动实际上是在DrawView类中运行的,它扩展了View类。如何从查看类中将某些内容返回到活动1?

1 个答案:

答案 0 :(得分:0)

这里需要做两件事:

首先 - 您的自定义视图需要将其分数报告给托管活动2

为了实现这个目的,请创建一个名为eg。

的接口
public interface OnResult {
    void onResult(int result);
}

使您的Activity2实现OnResult,并让您的自定义DrawView类具有字段OnResult resultCallback;,并让活动将其自身作为此字段。 e.g。

@覆盖

protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    DrawView view = new DrawView (this); // "this" here as a Context object
    view.setResultCallback(this); // "this" here as the OnResult listener object
    setContentView(view);
}

而且,在你的自定义视图中有结果时调用你的resultCallback.onResult()(即调用活动)

通过接口here

详细了解回调机制

秒 - 在您的activity2中将答案传回活动1

首先,从activity1启动activity2时,不要只使用startActivity()启动它,而是使用startActivityForResult()

启动它以获得结果

并在第一步的onResult()的activity2实现中,通过意图返回结果并完成活动 -

Intent intent = new Intent();
intent.putExtra("editTextValue", "value_here")
setResult(RESULT_OK, intent);        
finish(); 

详细了解将返回值从一个活动传递到另一个活动here(通过@Uma Sankar)