2016-05-15 14 views
-2

私はこれを検索してきましたが、私を助けてくれるものは見つかりませんでした。 私はツールバーのタブとして使用する2つのフラグメントを持つ主なアクティビティを持っています。 MainActivity内のフラグメントからImageButtonを他のアクティビティに接続する可能性はありますか?私はimagebuttomを介してアクティビティをActivityに接続する方法を知っていますが、私はFragment-> Activityからそれを行う方法を知らないだけです。ありがとう。他のアクティビティに移動するFragmentのImageButton。 Androidスタジオ

フラグメントにイメージボタンがあり、そのImageButtonを押すとアクティビティを開きたいと考えています。

public class Movies extends Fragment { 


    public Movies() { 
     // Required empty public constructor 
    } 
    ImageButton imageButton2; 



    @Override 
    public View onCreateView(LayoutInflater inflater, ViewGroup container, 
          Bundle savedInstanceState) { 
     // Inflate the layout for this fragment 
     return inflater.inflate(R.layout.fragment_movies, container, false); 
     imageButton2 = (ImageButton) findViewById(R.id.imageButton2); 

     imageButton2.setOnClickListener(new View.OnClickListener() { 
      @Override 
      public void onClick(View v) { 
       Intent intentLoadNewActivity = new Intent(Movies.this, Activity_Civil_War.class); 
       startActivity(intentLoadNewActivity); 
      } 
     }); 

    } 

} 

多くのエラーが発生しています。私もMainActivityでやろうとしましたが、nullオブジェクトの例外が出ます。

MainActivityクラス:

public class MainActivity extends AppCompatActivity { 
    Toolbar toolbar; 
    TabLayout tabLayout; 
    ViewPager viewPager; 
    view_pager_adapter viewPagerAdapter; 
    ImageButton imageButton2; 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_main); 
     toolbar=(Toolbar)findViewById((R.id.toolBar)); 





     tabLayout=(TabLayout)findViewById((R.id.tabLayout)); 
     viewPager=(ViewPager)findViewById((R.id.ViewPager)); 
     viewPagerAdapter = new view_pager_adapter(getSupportFragmentManager()); 
     viewPagerAdapter.addFragments(new Showcase(),"Showcase"); 
     viewPagerAdapter.addFragments(new Movies(),"Movie List"); 
     viewPagerAdapter.addFragments(new Menu(),"Menu"); 
     viewPagerAdapter.addFragments(new Login(),"Login"); 

     viewPager.setAdapter(viewPagerAdapter); 
     tabLayout.setupWithViewPager(viewPager); 


    } 
} 
+0

はあなたがこれまでにやっていることを示すことができた:我々は我々が得るものを合計した場合のフラグメントでは、getActivity()

を呼び出すことによって、そうすることができますか?あなたの断片のコード。また、達成したいことをより正確にするために、断片から新しいアクティビティを開始したいですか? – Gauthier

+0

私のコードで編集しました。はい、私は自分の断片から新しい活動を開始したいと思います。 –

答えて

1
最初

いくつかのこと:

return inflater.inflate(R.layout.fragment_movies, container, false); 

あなた返りここ値であれば、それ以下のコードの残りの部分は呼び出されません。あなたがしなければならないことは、それを参照して、メソッドの終わりにそれを返すことです。

その後

Intent intentLoadNewActivity = new Intent(Movies.this, Activity_Civil_War.class); 

私は(私が間違っているなら、私を修正)作品は断片であるとActivity_Civil_Warが活動であることを前提としています。

フラグをパラメータとして受け取るインテントクラスのコンストラクタはありません。あなたが「これ」を呼び出すことによって何をしようとしているのかは、コンテキストを取得することです。

@Override 
public View onCreateView(LayoutInflater inflater, ViewGroup container, 
         Bundle savedInstanceState) { 
    // Inflate the layout for this fragment 
    View view = inflater.inflate(R.layout.fragment_movies, container, false); 
    imageButton2 = (ImageButton) findViewById(R.id.imageButton2); 

    imageButton2.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View v) { 
      Intent intentLoadNewActivity = new Intent(getActivity(), Activity_Civil_War.class); 
      startActivity(intentLoadNewActivity); 
     } 
    }); 
    return view; 
} 
+0

ありがとうございます!できます。 –

関連する問題