将数据从内部视图传递到活动
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