我一直在搜索这个,但我找不到任何可以帮助我的东西。 我有一个包含2个片段的主要活动,我在工具栏中用作标签。是否有可能将ImageButton从我的MainActivity中的片段连接到另一个Activity。我知道如何通过imagebuttom将Activity连接到Activity,我只是不知道如何从Fragment->中做到这一点。活动。感谢。
我的片段上有一个图像按钮,当我按下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 :(得分:1)
首先要做的事情很少:
return inflater.inflate(R.layout.fragment_movies, container, false);
如果您的返回值,则不会调用其下方的其余代码。您需要做的是保留对它的引用并在方法结束时返回它。
然后
Intent intentLoadNewActivity = new Intent(Movies.this, Activity_Civil_War.class);
我认为电影是一个片段,而Activity_Civil_War是一个活动(如果我错了,请纠正我。)
Intent类中没有构造函数将Fragment作为参数。您打算通过致电'这个'是获得一个上下文。在片段中,您可以通过调用 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;
}