2016-04-17 33 views
0

ちょっとAndroidで新しく、主なアクティビティから別のアクティビティを開く際に問題があります。Androidのアクティビティ - Androidで別のアクティビティを開くにはどうすればよいですか?

メインクラス:

import android.content.Intent; 
    import android.os.Bundle; 
    import android.support.v4.app.Fragment; 
    import android.view.LayoutInflater; 
    import android.view.View; 
    import android.view.ViewGroup; 
    import android.widget.AdapterView; 
    import android.widget.ArrayAdapter; 
    import android.widget.ListView; 
    import android.widget.Toast; 

    import java.util.HashMap; 

    import layout.SongsPage; 

    public class MainActivityFragment extends Fragment { 

     ListView listView; 
     HashMap<String, String> songs; 

     Singer[] singeres=new Singer[4]; 

     public Singer[] getSingeres() { 
      singeres[0]=new Singer("Dave Brubeck",1); 
      singeres[0].AddingSong("Take Five","http://bff.vr2.net/jazz/Dave%20Brubeck%20Quartet%20featuring%20Paul%20Desmond%20-%20Buried%20Treasures%20()/07%20%20-%20Take%20Five.mp3"); 

      singeres[1]=new Singer("Jefferson Airplane",2); 
      singeres[1].AddingSong("White Rabbit", "http://bff.vr2.net/jazz/Dave%20Brubeck%20Quartet%20featuring%20Paul%20Desmond%20-%20Buried%20Treasures%20()/07%20%20-%20Take%20Five.mp3"); 

      singeres[2]=new Singer("2Pac",3); 
      singeres[2].AddingSong("Revolution","http://bff.vr2.net/jazz/Dave%20Brubeck%20Quartet%20featuring%20Paul%20Desmond%20-%20Buried%20Treasures%20()/07%20%20-%20Take%20Five.mp3"); 

      singeres[3]=new Singer("Mr. Probz",4); 
      singeres[3].AddingSong("Waves","http://bff.vr2.net/jazz/Dave%20Brubeck%20Quartet%20featuring%20Paul%20Desmond%20-%20Buried%20Treasures%20()/07%20%20-%20Take%20Five.mp3"); 

      return singeres; 
     } 

     Singer[] Getsingeres=getSingeres(); 

     public MainActivityFragment() { 
      songs = new HashMap<>(); 
      songs.put("Dave Brubeck - Take Five", 
        "http://bff.vr2.net/jazz/Dave%20Brubeck%20Quartet%20featuring%20Paul%20Desmond%20-%20Buried%20Treasures%20()/07%20%20-%20Take%20Five.mp3"); 
      songs.put("Jefferson Airplane - White Rabbit", "http://www.rraurl.com.br/media/musica/tracks/Jefferson%20Airplane%20-%201967%20-%20Surrealistic%20Pillow%20-%2010%20-%20White%20Rabbit.mp3"); 
      songs.put("2Pac - Revolution","http://thug2pac.narod.ru/mp3/Phenomeno/02_Revolution_www.thug2pac.narod.ru.mp3"); 
      songs.put("Mr. Probz - Waves", "http://mp3light.net/assets/songs/393000-393999/393222-waves-mr-probz.mp3"); 

      for(int i=0;i<singeres.length;i++){ 
       songs.put(Getsingeres[i].name,"http://bff.vr2.net/jazz/Dave%20Brubeck%20Quartet%20featuring%20Paul%20Desmond%20-%20Buried%20Treasures%20()/07%20%20-%20Take%20Five.mp3"); 
      } 
     } 

     @Override 
     public View onCreateView(LayoutInflater inflater, ViewGroup container, 
           Bundle savedInstanceState) { 
      final View v = inflater.inflate(R.layout.fragment_main, container, false); 
      listView = (ListView) v.findViewById(R.id.listView); 
      listView.setAdapter(new ArrayAdapter<String>(
        getActivity(), 
        R.layout.listview_item, 
        R.id.textView, 
        songs.keySet().toArray(new String[songs.keySet().size()])));//keySet=key 
      listView.setOnItemClickListener(new AdapterView.OnItemClickListener() { 
       @Override 
       public void onItemClick(AdapterView<?> parent, View view, int position, long id) { 
        //starting the mediaPlayer Activity with the song url 
        Intent intent = new Intent(getActivity(), SongsPage.class); 



        **startActivityForResult(intent, 1);** 
        //getActivity().overridePendingTransition(android.R.anim.slide_in_left, android.R.anim.fade_out); 
       } 
      }); 
      return v; 
     } 

     @Override 
     public void onResume(){ 
      super.onResume(); 
     } 

     @Override 
     public void onActivityResult(int requestCode, int resultCode, Intent data) { 
      super.onActivityResult(requestCode, resultCode, data); 
      getActivity(); 
      if(resultCode == -1){ 
       Toast.makeText(
         getActivity(), 
         "can't play that song", 
         Toast.LENGTH_LONG).show(); 

      } 
     } 
    } 

SongsPageクラス:

package layout; 

import android.content.Context; 
import android.net.Uri; 
import android.os.Bundle; 
import android.support.v4.app.Fragment; 
import android.view.LayoutInflater; 
import android.view.View; 
import android.view.ViewGroup; 

import com.telhai.eiran.mediaplayer.R; 

/** 
* A simple {@link Fragment} subclass. 
* Activities that contain this fragment must implement the 
* {@link SongsPage.OnFragmentInteractionListener} interface 
* to handle interaction events. 
*/ 
public class SongsPage extends Fragment{ 

    private OnFragmentInteractionListener mListener; 

    public SongsPage() { 
     // Required empty public constructor 
    } 


    @Override 
    public View onCreateView(LayoutInflater inflater, ViewGroup container, 
          Bundle savedInstanceState) { 
     // Inflate the layout for this fragment 
     return inflater.inflate(R.layout.fragment_songs_page, container, false); 
    } 

    // TODO: Rename method, update argument and hook method into UI event 
    public void onButtonPressed(Uri uri) { 
     if (mListener != null) { 
      mListener.onFragmentInteraction(uri); 
     } 
    } 

    @Override 
    public void onAttach(Context context) { 
     super.onAttach(context); 
     if (context instanceof OnFragmentInteractionListener) { 
      mListener = (OnFragmentInteractionListener) context; 
     } else { 
      throw new RuntimeException(context.toString() 
        + " must implement OnFragmentInteractionListener"); 
     } 
    } 

    @Override 
    public void onDetach() { 
     super.onDetach(); 
     mListener = null; 
    } 

    /** 
    * This interface must be implemented by activities that contain this 
    * fragment to allow an interaction in this fragment to be communicated 
    * to the activity and potentially other fragments contained in that 
    * activity. 
    * <p> 
    * See the Android Training lesson <a href= 
    * "http://developer.android.com/training/basics/fragments/communicating.html" 
    * >Communicating with Other Fragments</a> for more information. 
    */ 
    public interface OnFragmentInteractionListener { 
     // TODO: Update argument type and name 
     void onFragmentInteraction(Uri uri); 
    } 
} 

私はメインページで、それは言う私の携帯電話上のエラーを示すことが曲をクリックすると

「残念ながら[プロジェクト名]は停止しました」

私はデバッグするとき

は、私が発見した問題startActivityForResult(intent, 1);

ことができる人の助けを借りて、してください?

+0

'SongsPage'は' Fragment'であり、 'Activity'ではありません。 'startActivity *()'メソッドで 'Fragment'を開始することはできません。インスタンス化することで 'Fragment'sをロードし、それらを' Activity'のレイアウトに移します。 'Fragment'sに関する[developer pages](http://developer.android.com/training/basics/fragments/index.html)を読んでください。そこには、基礎を示すサンプルプロジェクトがあります。 –

+0

ああ助けて、tyvm :) –

答えて

1

あなたは、アクティビティではなく、フラグメントを開こうとしています。

フラグメントには、他のアクティビティでも必要な場合に再利用に適したアクティビティに保存できるクラスが記述されています。 フラグメントは、アクティビティに配置できるアプリケーションのユーザーインターフェイスまたはビヘイビアの一部ですが、フラグメントはアクティビティなしではインスタンス化できません。

ちょうどあなたの活動のコンテナでそのように取引を行い、あなたの活動のフラグメントを実現するために:

FragmentManager fm = getFragmentManager(); 
FragmentTransaction ft = fm.beginTransaction(); 

YourFragment frag = new YourFragment(); 
ft.replace(R.id.container_for_fragment, frag); 
ft.commit(); 

あなたが断片をしたくない場合は、単に活動するSongsPageクラスを変更。 その場合、マニフェストで宣言するのを忘れないでください。 またはフラグメントとして必要な場合は、thisを参照してください。

+0

うん、私はちょうどそれをアクティビティに置き換えて:)。 ありがとうございます。 –