2016-04-05 54 views
0

我有一个包含视图的活动。将数据从内部视图传递到活动

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


} 
+0

完善的接口!鉴于我在'PlacingBoxView'中使用了一个视图而不是一个Activity,你应该只用'Context context'来改变''activity activity'',我会标记它!感谢您的帮助;) – Alvaro

+0

@Alvaro我在答案中做出了您所要求的更改,以便您接受它。 –

1

触摸屏幕,我一直在试图用这一切的可能性,但他们只是分享信息。也许我应该使用onActivityResult,但我已经在活动...

不,onActivityResult()得到不同的目的。你应该做的是在你的视图中实现普通的监听器,然后把你的活动附加到视图的监听器上(就像你使用OnClickListener一样)。这样,您的视图将能够在需要时回调并以这种方式在Activity中触发一些操作。