Fragment 上的 ImageButton 转到另一个 Activity。 Android 工作室

ImageButton on Fragment which goes to another Activity. Android Studio

我一直在搜索这个,但没有找到任何可以帮助我的东西。 我有一个主 activity 和 2 个片段,我将它们用作工具栏中的选项卡。是否有可能将 ImageButton 从我的 MainActivity 中的一个片段连接到另一个 Activity。我知道如何通过图像按钮将 Activity 连接到 Activity,我只是不知道如何从 Fragment-> Activity 进行连接。谢谢

我的片段上有一个图像按钮,我想在按下该图像按钮时打开一个 activity。

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 中执行此操作,但我得到空对象异常。

主要Activity Class:

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);


    }
}

先说几件事 :

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

如果你的return在这里有一个值,它下面的其余代码将不会被调用。您需要做的是保留对它的引用,并在您的方法结束时 return 它。

然后

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

我假设 Movies 是片段,Activity_Civil_War 是 Activity(如果我错了请纠正我)。

Intent class 中没有以 Fragment 作为参数的构造函数。您通过调用 'this' 试图做的是获取上下文。在片段中,您可以通过调用 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;
}