0


Android パノラマ クライアント のコンテンツ ビューを変更するオプションはありますか?

たとえば、アクションバーを一番上に表示したいとします。ただし、現在、アクション バーは最初に表示され、ロードされたパノラマ クライアントによって非表示になります。これは、パノラマ クライアントが常にフル スクリーン モードで表示されるためです。ただし、追加のフラグメントで開始されます。


私は今、パノラマクライアントをフラグメントを介して別のフレームに入れようとしました-これはこれまでの私のコードです:


1. これは、パノラマ フラグメントとテキスト フィールドを含むアクティビティです。

public class PanoramaActivity extends Activity {

public static final String TAG = PanoramaActivity.class.getSimpleName();

private ActionBar actionBar;
private Fragment panoramaClient = new PanoramaClientFragment();

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_snow);
    actionBar = getActionBar();
    actionBar.setDisplayHomeAsUpEnabled(true);


    FragmentManager fragMan = getFragmentManager();
    FragmentTransaction fragTrans = fragMan.beginTransaction();

    fragTrans.replace(R.id.panoramaCLientFrame, panoramaClient, "PANO");
    fragTrans.commit();

  //Non fullscreen
    requestWindowFeature(Window.FEATURE_ACTION_BAR);
    getWindow().addFlags(WindowManager.LayoutParams.FLAG_FORCE_NOT_FULLSCREEN);
    getWindow().clearFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN);
}

@Override
public boolean onCreateOptionsMenu(Menu menu) {
    // Inflate the menu; this adds items to the action bar if it is present.
    getMenuInflater().inflate(R.menu.panorama, menu);
    return true;
}

@Override
public boolean onOptionsItemSelected(MenuItem item) {
    switch (item.getItemId()) {
    case android.R.id.home: 
        onBackPressed();
        break;

    default:
        return super.onOptionsItemSelected(item);
    }
    return true;
}
}


2.これは、パノラマ クライアントを含むフラグメント クラスです。

public class PanoramaClientFragment extends Fragment implements ConnectionCallbacks,
OnConnectionFailedListener, OnPanoramaInfoLoadedListener {

private View view;
private PanoramaClient panoramaClient;

public static final String TAG = PanoramaClientFragment.class.getSimpleName();

public PanoramaClientFragment() {
    // TODO Auto-generated constructor stub
}

@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle     savedInstanteState){
    view = inflater.inflate(R.layout.panorama_client, container, false);
    return view;
}

@Override
public void onCreate(Bundle savedInstanceState){
    super.onCreate(savedInstanceState);
    panoramaClient = new PanoramaClient(getActivity().getApplicationContext(), this, this);

//Non fullscreen
//getActivity().requestWindowFeature(Window.FEATURE_ACTION_BAR);
//getActivity().getWindow().addFlags(WindowManager.LayoutParams.FLAG_FORCE_NOT_FULLSCREEN);
//getActivity().getWindow().clearFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN);
}

@Override
public void onStart() {
    super.onStart();
    panoramaClient.connect();
}

@Override
public void onPanoramaInfoLoaded(ConnectionResult result, Intent viewerIntent) {
    if (result.isSuccess()) {
        Log.i(TAG, "found viewerIntent: " + viewerIntent);
        if (viewerIntent != null) {
            startActivity(viewerIntent);
        }
    } else {
        Log.e(TAG, "error: " + result);
    }
}

@Override
public void onConnectionFailed(ConnectionResult status) {
    Log.e(TAG, "connection failed: " + status);
}

@Override
public void onConnected(Bundle arg0) {
    Uri uri = Uri.parse("android.resource://" + this.getActivity().getPackageName() + "/" + R.raw.pano1);
    panoramaClient.loadPanoramaInfo(this, uri); 
}

@Override
public void onDisconnected() {
    // Do nothing.
}

@Override
public void onStop() {
    super.onStop();
    panoramaClient.disconnect();
}
}

フラグメント クラスの 3 つの「非フルスクリーン」行のコメントを外すと、アプリがクラッシュして次のように表示されます。

android.util.AndroidRuntimeException: コンテンツを追加する前に requestFeature() を呼び出す必要があります


返信ありがとうございます。ご挨拶。

4

2 に答える 2

0

単純な理由の 1 つで、アクション バーを表示できないと思います。パノラマ情報が読み込まれると、まったく制御できない新しいアクティビティが開始されます。

if (viewerIntent != null) {
    startActivity(viewerIntent);
}

そのため、コードは PanoramaClient インスタンスを処理するアクティビティを変更しようとしますが、パノラマ画像を読み込むアクティビティは変更しません。

于 2014-02-03T09:02:43.383 に答える
0

フラグメントを作成し、それにパノラマ クライアント アクティビティを追加してみてください。

于 2013-12-16T16:36:19.597 に答える