任何人都可以帮助我在点击ImageView时实现新活动的开启。我有一个显示在下面的代码段。
public class Fans extends AppCompatActivity implements TabLayout.OnTabSelectedListener{
//This is our tablayout
private TabLayout tabLayout;
//This is our viewPager
private ViewPager viewPager;
ImageView image;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_fans);
//Adding toolbar to the activity
Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);
setSupportActionBar(toolbar);
//Initializing the tablayout
tabLayout = (TabLayout) findViewById(R.id.tabLayout);
//Adding the tabs using addTab() method
tabLayout.addTab(tabLayout.newTab().setText("Fans"));
tabLayout.addTab(tabLayout.newTab().setText("Jersey"));
tabLayout.addTab(tabLayout.newTab().setText("Team"));
tabLayout.setTabGravity(TabLayout.GRAVITY_FILL);
//Initializing viewPager
viewPager = (ViewPager) findViewById(R.id.pager);
//Creating our pager adapter
Pager adapter = new Pager(getSupportFragmentManager(), tabLayout.getTabCount());
//Adding adapter to pager
viewPager.setAdapter(adapter);
viewPager.addOnPageChangeListener(new TabLayout.TabLayoutOnPageChangeListener(tabLayout));
tabLayout.setOnTabSelectedListener(new TabLayout.OnTabSelectedListener() {
@Override
public void onTabSelected(TabLayout.Tab tab) {
viewPager.setCurrentItem(tab.getPosition());
}
@Override
public void onTabUnselected(TabLayout.Tab tab) {
}
@Override
public void onTabReselected(TabLayout.Tab tab) {
}
});
}
@Override
public void onTabSelected(TabLayout.Tab tab) {
viewPager.setCurrentItem(tab.getPosition());
}
@Override
public void onTabUnselected(TabLayout.Tab tab) {
}
@Override
public void onTabReselected(TabLayout.Tab tab) {
}
}
好的我有一个带有三个标签的代码,以下控制我的标签,它们正常工作。
public class Pager extends FragmentStatePagerAdapter {
//integer to count number of tabs
int tabCount;
//Constructor to the class
public Pager(FragmentManager fm, int tabCount) {
super(fm);
//Initializing tab count
this.tabCount= tabCount;
}
//Overriding method getItem
@Override
public Fragment getItem(int position) {
//Returning the current tabs
switch (position) {
case 0:
TabFan tab1 = new TabFan();
return tab1;
case 1:
TabJersey tab2 = new TabJersey();
return tab2;
case 2:
TabTeam tab3 = new TabTeam();
return tab3;
default:
return null;
}
}
//Overriden method getCount to get the number of tabs
@Override
public int getCount() {
return tabCount;
}
}
我有另一个班级寻呼机
public class TabFan extends Fragment {
//Overriden method onCreateView
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
//Returning the layout file after inflating
//Change R.layout.tab1 in you classes
return inflater.inflate(R.layout.tab_fan, container, false);
// Onclick Listener
}
}
最后感兴趣的原始类TabFan,现在应该在哪个应该实现该侦听器。我已经尝试了类粉丝,但显然我有点迷恋,TabFan似乎也没有与事件合作。请帮忙。
{{1}}
}
答案 0 :(得分:2)
如果单击 Ctrl + Space 键,Android Studio
将显示建议窗口并为您生成覆盖onClick
等方法。
image.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Intent j = new Intent(getActivity(), Activity2.class);
startActivity(j);
}
});
无论您身在何处,都在Fragment
或Activity
。 ImageView
只需要View.OnClickListener
。用于检测点击事件覆盖onClick
方法。
另外一点,如果您需要context
片段使用getActivity()
或getActivity().getApplicationContext()
答案 1 :(得分:2)
使用您提供的代码,您需要做两件事才能将image
对象正确链接到您编写的onClick()
方法。
首先,Fragment类需要实现View.OnClickListener
接口。这是onClick(View v)
在使用setOnClickListener(this)
时实际激活点击的原因。将您的类声明行替换为:
public class TabFan extends Fragment implements View.OnClickListener {
其次,如果您要使用TabFan
向setOnClickListener(this)
添加任何可点击的对象,则onClick(View v)
需要验证它是否正在处理预期的视图:
@Override
public void onClick(View v) {
if (v.getId() == R.id.image) {
// Launching new Activity on hitting the image
Intent j = new Intent(getActivity().getApplicationContext(), Activity2.class);
startActivity(j);
// End intent
}
}
答案 2 :(得分:1)
我喜欢做的是在XML中设置onClick:
<ImageButton
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:onClick="yourMethod"
android:src="@drawable/yourpicture"/>
然后在你的Fragment或Activity中实现你的方法来打开新的Activity:
public void yourMethod(View v) {
Intent intent = new Intent(this, ToOpenAcitivy.class);
startActivity(intent);
}
同样this site在学习这样的东西时帮助了我很多。