2016-02-23 10 views
7

Ich probiere youtube Video auf meiner App gespielt werden. Ich verstehe, dass dies erreicht werden kann, indem Aktivität als YouTubeBaseActivity erweitert wird, indem ich dies tue, habe ich keinen Zugriff auf Sie meine Symbolleiste.GetSupportActionBar mit YouTubeBaseActivity

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

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

Ich bekomme getSupportActionbar konnte nicht gelöst werden. Gibt es eine einfache Möglichkeit, um auf die Symbolleiste zuzugreifen, indem Sie die Aktivität YouTubeBaseActivity erweitern.

Mache ich etwas falsch?

Danke!

+0

Sagen Sie mir einfach, welche Art von Aktivität Sie erweitern möchten? Appcompat activity? –

+0

Sie können einfach ein benutzerdefiniertes XML-Layout als Kopfzeile anstelle von Aktionsleiste verwenden. –

+0

Können Sie mir eine Idee geben? –

Antwort

19

YouTubeBaseActivity extends Activity, (im Gegensatz zu zum Beispiel AppCompatActivity), so existiert die getSupportActionBar() Methode nicht.

Sie könnten versuchen, Ihre Klasse zu erweitern AppCompatActivity, und verwenden Sie eine YouTubePlayerSupportFragment statt wo immer Sie normalerweise eine YouTubePlayerView verwenden würden.

Edit:

Fügen Sie folgendes zu Ihrem layout Datei, anstelle eines 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"/> 

Zugang in onCreate() Ihrer Activity in der gleichen Weise würden Sie eine andere statische Fragment

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

Haben Sie eine Beispiel-Android-App (Beispiel) gesehen, die YouTubePlayerSupportFragment verwenden kann - Wenn ja, können Sie mir einen Link geben. Ich konnte keine finden, da ich nicht weiß, wie ich sie nennen soll. –

+0

@SanjanaNair Es ist mein Verständnis, dass Sie ein 'YouTubePlayerView' in Ihrer 'Layout'-Datei durch ein statisches' Fragment' ersetzen und mit diesem interagieren würden, wie jedes andere statische Fragment. Es gibt ein paar Demos auf [GitHub] (https://github.com/youtube/yt-android-player/tree/master/src/com/examples/youtubeapidemo), und ich habe meine Antwort oben bearbeitet (ungetestet). – PPartisan

+0

Müsstest du einen funktionierenden Build dafür haben? Ich habe etwas sehr ähnliches, aber die App stürzt ab, wenn ich versuche, ein Youtube Support Fragment zu laden. Ich habe gerade eine Frage bezüglich der AppCompatActivity mit YTSupportFragment gestellt. – krikara

0

hast du ne Hrsg zu Theme.AppCompat.Light.NoActionBar als Thema für diese Aktivität mit App: Thema auf Ihrem Manifest und

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

und dann header_top Layout auf Ihrer Aktivität Layout umfassenheader_top.xml kann sagen.

<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 

und

auf Ihrer Aktivität.

 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(); 

       } 
      }); 
Verwandte Themen