Fragment上的ImageButton转到另一个Activity。 Android Studio

时间:2016-05-15 16:18:10

标签: android android-fragmentactivity

我一直在搜索这个,但我找不到任何可以帮助我的东西。 我有一个包含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);


    }
}

1 个答案:

答案 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;
}