2016-04-05 86 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中觸發一些操作。