将数据从内部视图传递到活动

Posted

技术标签:

【中文标题】将数据从内部视图传递到活动【英文标题】:Pass data from inner View to Activity 【发布时间】:2016-07-26 01:06:34 【问题描述】:

我有一个包含视图的活动。

public class SecondActivity extends AppCompatActivity 
    @Override
    protected void onCreate(Bundle savedInstanceState) 
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_second_act);

        LinearLayout surface = (LinearLayout) findViewById(R.id.surfaceView1);
        surface.addView(new PlacingBoxView(this));
        surface.setBackgroundColor(Color.BLACK);

        if (ACTIONS_FINISHED)
            Log.d("TAG", "i made it!!");
        
    

PlacingBoxView 中,我做了一些操作,一旦完成,我将一个名为ACTIONS_FINISHED 的布尔值设置为true。我的目标是一旦我将此布尔值设置为 true,然后自动在活动中执行一些操作。

我一直在尝试使用all this possibilities,但它们只是为了分享信息。也许我应该使用 onActivityResult,但我已经在活动中了...

有什么想法吗?提前致谢!

编辑:视图执行 AsyncTask 并绘制多个形状,但用户根本没有触摸屏幕

【问题讨论】:

【参考方案1】:

PlacingBoxView 类中定义一个接口:

public class PlacingBoxView
   private GetCallBack callback;

   public PlacingBoxView(Context context)
         callback = (GetCallBack) context;
   

   public void someMethodWhichSendsData()
         callback.onMessageReceived(msg);
   


   public interface GetCallBack
       void onMessageReceived(Object msg);
   

现在在您的activity 中实现接口:

public class SecondActivity extends AppCompatActivity implements PlacingBoxView.GetCallBack

 @Override
 public void onMessageReceived(Object msg)
    // you have got your msg here.
 



【讨论】:

完美的界面!鉴于我在PlacingBoxView 中使用的是视图而不是活动,您应该将Àctivity activity 更改为Context context,我会正确标记它!谢谢你的帮助;) @Alvaro 我做了你在答案中要求的改变,所以你可以接受它。【参考方案2】:

我一直在尝试利用所有这些可能性,但它们只是为了分享信息。也许我应该使用 onActivityResult,但我已经在活动中...

不,onActivityResult() 有不同的目的。您要做的是在您的视图中实现普通侦听器,然后将您的活动附加到视图的侦听器(与 OnClickListener 相同的方式)。这样,您的视图将能够在需要时回调并以这种方式触发 Activity 中的某些操作。

【讨论】:

以上是关于将数据从内部视图传递到活动的主要内容,如果未能解决你的问题,请参考以下文章

如何将数据从异步类传递到主活动类

如何访问活动内部/从活动中的片段视图组件

将数据从片段列表视图项传递到活动字符串变量 onitemclicklistener

编辑 NEW 使用 HttpPost 将数据从控制器传递到视图

如何将值从动态列表视图传递到活动?

将数据从列表视图(从 Rest Api 生成)传递到另一个活动并将其保存到 SQLite 数据库中