關於啟動一個新的activity我遇到了一個問題。主要的問題就是,在一個視圖上我有三個tab
A) 包含gMap activity
B) camera activity
C)一些隨機的文本字段
要求就是這個應用程序要在肖像模式下運行。
除了Camera Preview Surface (B),所有的三個tab都正常。它旋轉了90度。唯一的方法是把應用程序設置成橫屏顯示模式,移除所有的標簽。但是這樣是非常不切實際的。
我的解決方案就是:代替
我的camera activity和一個空的常規activity,除了
Intent i = new Intent(this,CameraActivity.class);
startActivity(i);
這將啟動我的CameraActivity。而且很正常。我必須做一個包含3個圖片的線性布局使它看起來像真正的tab,所以我可以試著模擬操作系統的tab,旋轉屏幕成橫屏然後保持視覺效果作為圖像。用戶可以點擊其中的一個圖像(按鈕)來顯示下一個tab。這是我的想法。它應該在一個tab中退出我的‘camera activity’,返回到‘blank activity’,它應該解釋為從我的image中單擊desiered tab。
最主要的就是,當它返回時,它在一個tab下返回一個空白(黑色)頁面(因為它是空的)。我怎麼能夠捕獲調用activity的返回這個頁面的返回事件,然後看看做了什麼動作?
當點擊退出camera activity時,我可以設置一個點擊的監聽事件以便可以對假tab(圖像)被點擊做出會用。一旦退出,tab應該更新以便你來返回。有什麼建議麼?
謝謝。
我只專注於回答怎麼解決你的這個很緊急的問題,所以答案也你想要的。
捕獲在另外一個activity中的一個activity的動作需要三個步驟。
加載第二個activity(你的‘camera activity’)作為一個子activity,用startActivityForResult而不是startActivity。
Intent i = new Intent(this,CameraActivity.class);
startActivityForResult(i, STATIC_INTEGER_VALUE);
在這個子activity(camera activity)中,當你返回到父app時用額外的bundle,你需要創建一個新的包含索引tab的intent來顯示,而不僅僅是當一個用戶點擊不同的tab圖片的時候關閉activity。在關閉camera activity結束之前傳遞它到父調用setResult。
resultIntent = new Intent(null);
resultIntent.putExtra(PUBLIC_STATIC_STRING_IDENTIFIER, tabIndexValue);
setResult(Activity.RESULT_OK, resultIntent);
finish();
最後一步是在調用activity的時候,重寫onActivityResult來監聽camera activity的回調。從返回的Intent獲得額外的來決定你想要顯示的索引tab
@Override
public void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
switch(requestCode) {
case (STATIC_INTEGER_VALUE) : {
if (resultCode == Activity.RESULT_OK) {
int tabIndex = data.getIntExtra(PUBLIC_STATIC_STRING_IDENTIFIER);
// TODO Switch tabs using the index.
}
break;
}
}
}