2016-02-23 4 views
7

私は自分のアプリで再生するYouTube動画を試しています。これを行うことでYouTubeBaseActivityとしての活動を拡張することでこれが達成できると私は理解しています。私はあなたのツールバーにアクセスできません。YouTubeBaseActivityのgetSupportActionBar

mActionBar = (Toolbar) findViewById(R.id.toolbar); 
     if (mActionBar != null) 
     { 
      setSupportActionBar(mActionBar); 
     } 

     getSupportActionBar().setTitle(getResources().getString(R.string.youtubetitle)); 
     getSupportActionBar().setDisplayHomeAsUpEnabled(true); 
     getSupportActionBar().setHomeButtonEnabled(true); 

getSupportActionbarを解決できませんでした。 YouTubeBaseActivityのアクティビティを拡張することで、ツールバーに簡単にアクセスできますか?

何か間違っていますか?

ありがとうございます!

+0

どのタイプのアクティビティを拡張したいのですか?appcompatアクティビティですか? –

+0

アクションバーの代わりにヘッダとしてカスタムXMLレイアウトを使用するだけでもかまいません。 –

+0

私にアイデアを教えてもらえますか? –

答えて

19

YouTubeBaseActivity extends Activity(例えば、AppCompatActivityとは対照的に)getSupportActionBar()メソッドは存在しません。

あなたはあなたのクラスがAppCompatActivityを拡張作ってみると、普段YouTubePlayerViewを使用する代わりに、どこYouTubePlayerSupportFragmentを使用することができます。

編集:

は、あなたが他の静的Fragment

と同じ方法で YouTubePlayerView

<fragment 
    android:name="com.google.android.youtube.player.YouTubePlayerSupportFragment" 
    android:id="@+id/youtube_fragment" 
    android:layout_width="match_parent" 
    android:layout_height="wrap_content"/> 

あなたActivityonCreate()でアクセスをする代わりに、あなたのlayoutファイルに次の行を追加します。

public class CustomYouTubeActivity extends AppCompatActivity implements YouTubePlayer.OnInitialisedListener { 

    @Override 
    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 

     setContentView(R.layout.fragments_demo); 

     YouTubePlayerSupportFragment frag = 
      (YouTubePlayerSupportFragment) getSupportFragmentManager().findFragmentById(R.id.youtube_fragment); 
     frag.initialize(DeveloperKey.DEVELOPER_KEY, this); 
    } 

    @Override 
    public void onInitializationSuccess(YouTubePlayer.Provider provider, YouTubePlayer player, 
    boolean wasRestored) { 
     if (!wasRestored) { 
     //I assume the below String value is your video id 
     player.cueVideo("nCgQDjiotG0"); 
    } 

    @Override 
    public void onInitializationFailure (YouTubePlayer.Provider provider, YouTubeInitializationResult error) { 
     if (errorReason.isUserRecoverableError()) { 
      errorReason.getErrorDialog(this, RECOVERY_DIALOG_REQUEST).show(); 
     } else { 
      String errorMessage = String.format(getString(R.string.error_player), errorReason.toString()); 
      Toast.makeText(this, errorMessage, Toast.LENGTH_LONG).show(); 
     } 
    }  

} 
+0

YouTubePlayerSupportFragmentを使用できるサンプルAndroidアプリ(例)を見たことがありますか?私はそれらを呼び出す方法がわからないので、私は何も見つけることができませんでした。 –

+0

@SanjanaNairあなたの 'layout'ファイルの' YouTubePlayerView'を静的 'Fragment'で置き換えて、他の静的フラグメントと同じようにやりとりすることを理解しています。 ['GitHub'](https://github.com/youtube/yt-android-player/tree/master/src/com/examples/youtubeapidemo)にいくつかのデモがあります。私は上記の私の答えを編集しました。テストされていない)。 – PPartisan

+0

これのための作業用ビルドが必要ですか?私は非常に似ているが、Youtube Support Fragmentを読み込もうとするとアプリがクラッシュする。私はちょうどYTSupportFragmentでAppCompatActivityに関する質問をしました。 – krikara

0

あなたアプリを使って、この特定の活動のテーマとしてTheme.AppCompat.Light.NoActionBarに編:マニフェストのテーマとheader_top.xml

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
     android:layout_width="match_parent" 
     android:layout_height="55dp" 
     android:background="@color/bg_header_gray" 
     android:padding="5dp"> 

     <ImageView 
      android:id="@+id/ivBackButton" 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:layout_alignParentLeft="true" 
      android:layout_centerVertical="true" 
      android:padding="10dp" 
      android:src="@drawable/ic_action_backbutton" /> 

     <TextView 
      android:id="@+id/tvTitleHeader" 
      android:layout_width="wrap_content" 
      android:layout_height="match_parent" 
      android:layout_centerHorizontal="true" 
      android:layout_centerInParent="true" 
      android:layout_centerVertical="true" 
      android:gravity="center" 
      android:padding="7dp" 
      android:text="" 
      android:textColor="@color/black" 
      android:textSize="22sp" /> 

     <TextView 
      android:id="@+id/tvRightSideHeader" 
      android:layout_width="wrap_content" 
      android:layout_height="match_parent" 
      android:layout_alignParentRight="true" 
      android:layout_centerVertical="true" 
      android:gravity="center" 
      android:padding="7dp" 
      android:text="RightSide" 
      android:textColor="@drawable/header_btn_selector" 
      android:textSize="20sp" /> 


    </RelativeLayout> 

を言うと、あなたの活動のレイアウト上のごheader_topレイアウトを含めることができます。あなたの活動の

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    xmlns:app="http://schemas.android.com/apk/res-auto" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:background="#FAFAFA" 
    android:orientation="vertical"> 


    <include layout="@layout/header_top" /> 
....//other views 

</LinearLayout 

 ivBackButton = (ImageView) findViewById(R.id.ivBackButton); 
     tvTitleHeader = (TextView) findViewById(R.id.tvTitleHeader); 
     /// tvDoneHeader = (TextView) findViewById(R.id.tvRightSideHeader); 
     // tvDoneHeader.setText("Save"); 
     tvTitleHeader.setText(R.string.youtubetitle); 

ivBackButton.setOnClickListener(new View.OnClickListener() { 

       @Override 
       public void onClick(View v) { 
        // TODO Auto-generated method stub 

finish(); 

       } 
      }); 
関連する問題