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