2016-05-15 4 views
-2

Я искал это, но я не нашел ничего, что могло бы мне помочь. У меня есть основное действие с 2 фрагментами, которые я использую в качестве вкладок в своей панели инструментов. Есть ли возможность подключения ImageButton из фрагмента в моей MainActivity к другому действию. Я знаю, как подключить Activity to Activity через imagebuttom, я просто не знаю, как это сделать из Fragment-> Activity. Благодарю.ImageButton on Fragment, который переходит на другую активность. Android Studio

У меня есть кнопка изображения на моем фрагменте, и я хочу открыть действие, когда я нажимаю этот 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

Не могли бы вы показать, что вы сделали до сих пор? Код из ваших фрагментов. А также более точно о том, чего вы хотите достичь, хотите ли вы запустить новую активность из фрагмента? – 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 является активность (поправьте меня, если я ошибаюсь).

В классе Intent нет конструктора, который принимает фрагмент как параметр. То, что вы пытаетесь сделать, вызывая это, - это получить контекст. В фрагменте вы можете сделать это по телефону getActivity()

Если суммировать вещи мы получаем:

@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

спасибо !! оно работает. –

 Смежные вопросы

  • Нет связанных вопросов^_^