4

こんにちは私は2つの異なるクラスを使用するアプリケーションを作ろうとしています。次のコードを2つの異なるクラスに分けると、断片と他のAppCompatActivityを拡張できます。フラグメントクラスとAppCompatActivityクラスを一緒に使用する

package com.example.oliver.myapplication; 

import android.support.v4.app.Fragment; 
import android.app.AlertDialog; 
import android.media.MediaPlayer; 
import android.os.Bundle; 
import android.support.v7.app.AppCompatActivity; 
import android.view.LayoutInflater; 
import android.view.View; 
import android.view.ViewGroup; 
import android.widget.Button; 
import android.widget.ImageButton; 
import android.widget.TextView; 

import java.util.Random; 


public class MyFragment extends AppCompatActivity, Fragment { 

    Button b, b2; 
    MediaPlayer nice, burp; 
    ImageButton img; 
    int n; 
    MediaPlayer [] s = new MediaPlayer[6]; 
    AlertDialog.Builder adb; 

    public static MyFragment newInstance() { 
     MyFragment fragment = new MyFragment(); 
     return fragment; 
    } 

     public View onCreateView(LayoutInflater inflater, ViewGroup container, 
           Bundle savedInstanceState) { 
      View rootView = inflater.inflate(R.layout.my_fragment, container, false); 
      img = (ImageButton) rootView.findViewById(R.id.img); 

      s[0] = MediaPlayer.create(MyFragment.this, R.raw.burp); 
      s[1] = MediaPlayer.create(MyFragment.this, R.raw.robert); 
      s[2] = MediaPlayer.create(MyFragment.this, R.raw.burp2); 



     img.setOnClickListener(new View.OnClickListener() { 
      @Override 
      public void onClick(View view) { 
       for (int i = 0; i < 1; i++) { 
        Random r = new Random(); 
        n = r.nextInt(3); 

        s[n].start(); 
       } 
      } 
     });return rootView; 


}} 
+0

アクティビティとフラグメントを拡張する目的は何ですか?それらはAndroidで分離された構造です。正確にどの機能を組み合わせようとしていますか?両親から引き抜こうとしていますか? – JCricket

+0

スワイプしてアプリをナビゲートし、アプリでMediaPlayerを使用して音声を再生する –

+0

スワイプナビゲーションの実装:http://developer.android.com/training/implementing-navigation/lateral.html – JCricket

答えて

3

上記のコードはJavaには有効ではありません。

クラスは1つのクラスのみを拡張できます。アクティビティ/フラグメントは同時に2つのクラスを拡張しています。上記

クラスは、これらの行を除いて、有効なフラグメントのサブクラスである:

 s[0] = MediaPlayer.create(MyFragment.this, R.raw.burp); 
     s[1] = MediaPlayer.create(MyFragment.this, R.raw.robert); 
     s[2] = MediaPlayer.create(MyFragment.this, R.raw.burp2); 

"はMyFragment.getActivity()" と "MyFragment.this" を置き換え。

今、あなたは今、あなたは有効なフラグメントを持っている「フラグメントを拡張し、」

で「AppCompatActivity、フラグメントを拡張」に置き換えることができます。

自分でAppCompatActivityを作成します。アクティビティにフラグメントを追加する方法を調べます。良いプログラミングの練習中にヒントとして

、私はonActivityCreatedに)あなたがonCreateView(に次のコードを移動することが示唆():

 img = (ImageButton) getView().findViewById(R.id.img); 

 img = (ImageButton) rootView.findViewById(R.id.img); 

     s[0] = MediaPlayer.create(MyFragment.this, R.raw.burp); 
     s[1] = MediaPlayer.create(MyFragment.this, R.raw.robert); 
     s[2] = MediaPlayer.create(MyFragment.this, R.raw.burp2); 



    img.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View view) { 
      for (int i = 0; i < 1; i++) { 
       Random r = new Random(); 
       n = r.nextInt(3); 

       s[n].start(); 
      } 
     } 
    }); 

変更

 img = (ImageButton) rootView.findViewById(R.id.img); 

関連する問題