Java 切换到另一个活动,但刷卡不起作用
我的要求:- 我有两个活动。当我刷卡时,它将转到另一个活动 因此,我:-- MainActivity.javaJava 切换到另一个活动,但刷卡不起作用,java,android,Java,Android,我的要求:- 我有两个活动。当我刷卡时,它将转到另一个活动 因此,我:-- MainActivity.java public class MainActivity extends Activity { private GestureDetectorCompat gestureDetectorCompat; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstan
public class MainActivity extends Activity {
private GestureDetectorCompat gestureDetectorCompat;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_getservice);
gestureDetectorCompat = new GestureDetectorCompat(this, new MyGestureListener());
}
@Override
public boolean onTouchEvent(MotionEvent event) {
this.gestureDetectorCompat.onTouchEvent(event);
return super.onTouchEvent(event);
}
class MyGestureListener extends GestureDetector.SimpleOnGestureListener {
//handle 'swipe left' action only
@Override
public boolean onFling(MotionEvent event1, MotionEvent event2,
float velocityX, float velocityY) {
if(event2.getX() < event1.getX()){
//switch another activity
Intent intent = new Intent(
MainActivity.this, Join_form.class);
startActivity(intent);
finish();
}
return true;
}
}
}
public class Join_form extends Activity {
private GestureDetectorCompat gestureDetectorCompat;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
gestureDetectorCompat = new GestureDetectorCompat(this, new MyGestureListener());
}
@Override
public boolean onTouchEvent(MotionEvent event) {
this.gestureDetectorCompat.onTouchEvent(event);
return super.onTouchEvent(event);
}
class MyGestureListener extends GestureDetector.SimpleOnGestureListener {
//handle 'swipe left' action only
@Override
public boolean onFling(MotionEvent event1, MotionEvent event2,
float velocityX, float velocityY) {
if(event2.getX() > event1.getX()){
//switch another activity
Intent intent = new Intent(
Join_form.this, MainActivity.class);
startActivity(intent);
finish();
}
return true;
}
}
}
活动\u getservice.xml是:--
activity_main.xml是:--
但是我不能刷这一页。它不会转到另一页。为什么会这样?
问题出在哪里?您可能应该更改体系结构,将2个活动转换为片段,并将它们放在viewPager中。viewPager将为您处理滑动部件。同意@k3v1n4ud3。让我稍微扩展一下,因为我不能真正评论,因为缺乏业力 有了ViewPager(MainActivity.java内部)+MainFragment(Fragment)+JoinForm(Fragment),您就可以在没有监听器的情况下离开。它会自动为您处理刷卡部分 试想一下:你有一个大脑(主要活动w/ViewPager)和两只手臂(你正在实现的第一个和第二个片段)
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
myViewPager = (ViewPager) findViewById(R.id.myViewPager);
//somehow fill the adapter
MyAdapter myAdapter = new MyAdapter(getSupportFragmentManager(), getApplicationContext()); //=== required as per the MyAdapter class
//set the adapter
myViewPager.setAdapter(myAdapter);
// display first fragment
myViewPager.setCurrentItem(0);
}class MyAdapter extends FragmentPagerAdapter {
private final int[] titles = {R.string.main_activity_title, R.string.join_activity_title};
private final String[] fragments = {
MainFragment.class.getName(),
JoinFragment.class.getName()
};
private final Context ctx;
public MyAdapter(FragmentManager fm, Context ctx) {
super(fm);
this.ctx = ctx;
}
@Override
public CharSequence getPageTitle(int position) {
return ctx.getString(titles[position]);
}
@Override
public Fragment getItem(int position) {
return Fragment.instantiate(ctx, fragments[position]);
}
@Override
public int getCount() {
return titles.length;
}
}
myViewPager.setOnPageChangeListener(new ViewPager.SimpleOnPageChangeListener() {
@Override
public void onPageSelected(int position) {
// when user do a swipe the selected tab change
myTabHost.setSelectedNavigationItem(position);
}
});
//set titles
for (int i = 0; i < myAdapter.getCount(); i++) {
myTabHost.addTab(
myTabHost.newTab()
.setText(myAdapter.getPageTitle(i))
.setTabListener(this)
);
}
您还可以根据自己的意愿进行定制
我很抱歉,如果有打字错误和其他东西。但这应该能满足你大部分的需要。我已经试过了。但有一些问题,这就是为什么我需要这样做…如果我扩展了片段,那么一些方法不支持..顺便说一句,你能给我一些例子吗?哪些方法不支持?检查这个链接@Jignesh Jain,我正在跟踪这个..但我不知道为什么我的滑动不起作用
class MyAdapter extends FragmentPagerAdapter {
private final int[] titles = {R.string.main_activity_title, R.string.join_activity_title};
private final String[] fragments = {
MainFragment.class.getName(),
JoinFragment.class.getName()
};
private final Context ctx;
public MyAdapter(FragmentManager fm, Context ctx) {
super(fm);
this.ctx = ctx;
}
@Override
public CharSequence getPageTitle(int position) {
return ctx.getString(titles[position]);
}
@Override
public Fragment getItem(int position) {
return Fragment.instantiate(ctx, fragments[position]);
}
@Override
public int getCount() {
return titles.length;
}
}
myViewPager.setOnPageChangeListener(new ViewPager.SimpleOnPageChangeListener() {
@Override
public void onPageSelected(int position) {
// when user do a swipe the selected tab change
myTabHost.setSelectedNavigationItem(position);
}
});
//set titles
for (int i = 0; i < myAdapter.getCount(); i++) {
myTabHost.addTab(
myTabHost.newTab()
.setText(myAdapter.getPageTitle(i))
.setTabListener(this)
);
}
myViewPager.setPageTransformer(true, new DefaultTransformer());