使用滑动切换到另一个活动不起作用

时间:2015-05-01 11:38:54

标签: java android

我的要求: - 我有两个活动..当我滑动它将进入另一个活动..

所以,我有: - 的 MainActivity.java

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

Join_form.java

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

activity_getservice.xml 是: -

        <ScrollView xmlns:android="http://schemas.android.com/apk/res/android"   xmlns:tools="http://schemas.android.com/tools"
        android:id="@+id/scrollView1"
        android:layout_width="match_parent"
        android:layout_height="wrap_content" 
       >

<LinearLayout  android:id="@+id/LinearLayout1"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical"
    android:background="#0b2607"
     >
<TextView android:id="@+id/txt1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="Form" 
        android:layout_marginTop="30dp"
        android:padding="10dp"
        android:textSize="20dp"
        android:layout_gravity="center"/>

<View android:id="@+id/division1"
            android:layout_width="fill_parent"
            android:layout_height="1dp"
            android:layout_marginTop="5dp"
            android:layout_marginLeft="10dp"
            android:layout_marginRight="10dp"
            android:background="#999999" />


   <LinearLayout android:layout_width="fill_parent"
 android:layout_height="wrap_content"
 android:orientation="horizontal"
 android:layout_marginTop="5dp"
 android:layout_marginLeft="10dp"
 android:layout_marginRight="10dp">

        <TextView android:text="Name :"
    android:id="@+id/id"
    android:layout_width="0dp"
    android:layout_height="wrap_content"
    android:padding="10dip"
    android:gravity="left"
    android:layout_weight="1" 
    />

      <EditText android:id="@+id/editText1"
    android:layout_width="0dp"
    android:layout_height="wrap_content"
    android:padding="10dip"
    android:hint="name"
    android:layout_weight="1" />    

</LinearLayout>

<View android:id="@+id/division2"
            android:layout_width="fill_parent"
            android:layout_height="1dp"
            android:layout_marginTop="5dp"
            android:layout_marginLeft="10dp"
            android:layout_marginRight="10dp"
            android:background="#999999" />

<LinearLayout android:layout_width="fill_parent"
 android:layout_height="wrap_content"
 android:orientation="horizontal"
 android:layout_marginTop="5dp"
 android:layout_marginLeft="10dp"
 android:layout_marginRight="10dp">

        <TextView android:text="Address :"
    android:id="@+id/address"
    android:layout_width="0dp"
    android:layout_height="wrap_content"
    android:padding="10dip"
    android:gravity="left"
    android:layout_weight="1" 
    />

      <EditText android:id="@+id/editText2"
    android:layout_width="0dp"
    android:layout_height="wrap_content"
    android:padding="10dip"
    android:hint="address"
    android:layout_weight="1" />    






</LinearLayout>

<View
            android:id="@+id/division9"
            android:layout_width="fill_parent"
            android:layout_height="1dp"
            android:layout_marginTop="5dp"
            android:layout_marginLeft="10dp"
            android:layout_marginRight="10dp"
           android:background="#999999" />
<LinearLayout
 android:layout_width="fill_parent"
 android:layout_height="wrap_content"
 android:orientation="horizontal"
  android:layout_marginTop="5dp"
 android:layout_marginLeft="10dp"
 android:layout_marginRight="10dp">

  <TextView
    android:text="You Are :"
    android:id="@+id/txt"
    android:layout_width="0dp"
    android:layout_height="wrap_content"
    android:padding="10dip"
   android:gravity="left"
    android:layout_weight="1" />

  <Spinner

    android:id="@+id/spinner2"
    android:layout_width="0dp"
    android:layout_height="wrap_content"
    android:padding="10dip"
    android:layout_weight="1" />    

</LinearLayout>
<View
            android:id="@+id/division3"
            android:layout_width="fill_parent"
            android:layout_height="1dp"
            android:layout_marginTop="5dp"
            android:layout_marginLeft="10dp"
            android:layout_marginRight="10dp"
           android:background="#999999" />
<LinearLayout
 android:layout_width="fill_parent"
 android:layout_height="wrap_content"
 android:orientation="horizontal"
  android:layout_marginTop="5dp"
 android:layout_marginLeft="10dp"
 android:layout_marginRight="10dp">

  <TextView
    android:text="hii"
    android:id="@+id/txt4"
    android:layout_width="0dp"
    android:layout_height="wrap_content"
    android:padding="10dip"
   android:gravity="left"
    android:layout_weight="1" />

  <Spinner

    android:id="@+id/spinner3"
    android:layout_width="0dp"
    android:layout_height="wrap_content"
    android:padding="10dip"
    android:layout_weight="1" />    

</LinearLayout>
<View
            android:id="@+id/division10"
            android:layout_width="fill_parent"
            android:layout_height="1dp"
            android:layout_marginTop="5dp"
            android:layout_marginLeft="10dp"
            android:layout_marginRight="10dp"
           android:background="#999999" />



<LinearLayout
    android:id="@+id/check"
 android:layout_width="fill_parent"
 android:layout_height="wrap_content"
 android:orientation="vertical"
 android:layout_marginTop="5dp"
 android:layout_marginLeft="10dp"
 android:layout_marginRight="10dp">

     <TextView
    android:text="Select your reqirements:-"
    android:id="@+id/the"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:padding="10dip"
    android:gravity="left"
    android:layout_weight="1" 
    />

     <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content" 
         android:id="@+id/lay1">

        <CheckBox
            android:id="@+id/checkBox1"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="apple"
            android:tag="apple"
              android:onClick="onCheckboxClicked" />

        <CheckBox
            android:id="@+id/checkBox2"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="banana" 
            android:tag="banana" 
              android:onClick="onCheckboxClicked"/>

        <CheckBox
            android:id="@+id/checkBox3"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="water_milon" 
            android:tag="water_milon"
              android:onClick="onCheckboxClicked"/>

    </LinearLayout>
    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content" 
         android:id="@+id/lay2">

        <CheckBox
            android:id="@+id/checkBox4"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="guava" 
            android:tag="guava" 
              android:onClick="onCheckboxClicked"/>

        <CheckBox
            android:id="@+id/checkBox5"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="panir" 
             android:tag="panir"
               android:onClick="onCheckboxClicked"/>

        <CheckBox
            android:id="@+id/checkBox6"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="chatni" 
             android:tag="chatni"
               android:onClick="onCheckboxClicked"/>

    </LinearLayout>


</LinearLayout>
<View
            android:id="@+id/division6"
            android:layout_width="fill_parent"
            android:layout_height="1dp"
            android:layout_marginLeft="10dp"
            android:layout_marginRight="10dp"
           android:background="#999999"
           android:layout_marginTop="5dp" />

<TextView
    android:id="@+id/textView1"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:text="Write your message(optional) :"
    android:layout_marginLeft="10dp"
    android:layout_marginRight="10dp"
    android:layout_marginTop="5dp" />

<EditText
    android:id="@+id/editText3"
     android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:ems="10"
    android:inputType="textMultiLine"
   android:padding="10dip"
   android:layout_marginTop="5dp"
   android:layout_marginLeft="30dp"
   android:layout_marginRight="30dp"
   android:background="@drawable/edit_text_stle"
   android:hint="write something ">
    <requestFocus />
</EditText>
<View
            android:id="@+id/division7"
            android:layout_width="fill_parent"
            android:layout_height="1dp"
            android:layout_marginLeft="10dp"
            android:layout_marginRight="10dp"
           android:background="#999999"
           android:layout_marginTop="5dp" />
    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:gravity="center_horizontal" 
         android:layout_marginTop="10dp">

        <Button
            android:id="@+id/button1"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="send"
            />


    </LinearLayout>

 </LinearLayout>
 </ScrollView>

activity_main.xml 是: -

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical" >


</LinearLayout>

但是我无法刷页面。它不会转到另一页。为什么会这样? 问题在哪里?

2 个答案:

答案 0 :(得分:2)

同意@ k3v1n4ud3。让我稍微扩大一点,因为由于缺乏业力,我无法发表评论。

使用ViewPager(在MainActivity.java中)+ MainFragment(Fragment)+ JoinForm(Fragment),你可以在没有监听器的情况下离开。它会自动为您处理滑动部分。

想想这样:你有一个大脑(MainActivity w / ViewPager)和两个武器(你正在实施的第一个和第二个片段)。

  1. 创建一个包含ViewPager的MainActivity。

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

    }

  2. 创建一个扩展FragmentPagerAdapter(或FragmentStatePagerAdapter)的适配器。它看起来像这样:

    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;
        }
    }
    
  3. (可选)查看每个页面顶部的标题内容,您可以单击的那些标题,以便快进到另一页面?他们称之为tabhosts。

  4. 要使用它们,只需将tabhost添加到MainActivity布局中,并在MainActivity.java中添加此逻辑:

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

    4。 (可选)关于&#39; fling&#39;的动画 因此,要在切换片段时进行动画处理,您只需要调用它:

        myViewPager.setPageTransformer(true, new DefaultTransformer());
    

    您也可以根据自己的意愿进行自定义。

    如果有拼写错误和其他内容,我道歉。但这应该涵盖你需要的大部分内容。

答案 1 :(得分:0)

您可能应该更改架构,将2个活动转换为片段并将它们放在viewPager中。 viewPager将为您处理滑动部分。