0

我正在使用 swipeview 在两个页面之间滑动,每个页面本身就是一个活动(一个 xml 和一个 java 文件)。如果没有 swipeview,我的应用程序可以正常工作,并且我的数据库会显示在每个活动中。

但是,当我使用 swipeview 时,会显示 xml 文件(即:显示 UI 设计)并且我可以在页面之间滑动,但我的 java 文件似乎没有链接(即:所有功能都不存在,包括数据库适配器)..

这是我的 MainActivity.java:

Public class MainActivity extends Activity {
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        // Create and set adapter
        CustomPagerAdapter adapter = new CustomPagerAdapter();
        ViewPager myPager = (ViewPager) findViewById(R.id.customviewpager);
        myPager.setAdapter(adapter);
        myPager.setCurrentItem(0);
    }

}

这是我的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" >

    <android.support.v4.view.ViewPager
        android:id="@+id/customviewpager"
        android:layout_width="match_parent"
        android:layout_height="match_parent" />

</LinearLayout>

这是我的 cutomPagerAdapter 文件:

public class CustomPagerAdapter extends PagerAdapter {
    public Object instantiateItem(View collection, int position) {
        LayoutInflater inflater = (LayoutInflater) collection.getContext()
                .getSystemService(Context.LAYOUT_INFLATER_SERVICE);
        int resId = 0;
        switch (position) {
        case 0: {
            resId = R.layout.activity_one;
            break;
        }
        case 1: {
            resId = R.layout.activity_two;
            break;
        }
        }
        View view = inflater.inflate(resId, null);
        ((ViewPager) collection).addView(view, 0);
        return view;
    }

    @Override
    public void destroyItem(View arg0, int arg1, Object arg2) {
        ((ViewPager) arg0).removeView((View) arg2);
    }

    @Override
    public boolean isViewFromObject(View arg0, Object arg1) {
        return arg0 == ((View) arg1);
    }

    @Override
    public Parcelable saveState() {
        return null;
    }

    @Override
    public int getCount() {
        return 2;
    }
}

如何在使用 swipeview 时将我的 Java 文件链接到 UI xml 文件?

4

1 回答 1

1

在这段代码中,您并没有开始一个活动,您只是在膨胀一个不同的布局。

    View view = inflater.inflate(resId, null);
    ((ViewPager) collection).addView(view, 0);
    return view;

开始新活动时,您应该使用 startActivityForResult,例如

Intent intent = new Intent(MainActivity.this, SecondActivity.class);  
startActivityForResult(intent, 0);

然后在 onCreate 方法中,您应该设置适配器或您需要做的任何设置。活动应该是顶级的和自包含的,而不是由适配器管理。

编辑 您想做类似的事情:开始您的启动活动,这可能是您正在谈论的活动之一。在滑动时,启动第二个活动(不仅仅是加载布局),在向后滑动时启动第一个活动。如果您不想将活动保留在堆栈中(按返回箭头返回),您可以实现 onActivityResult() 来完成()活动(关闭它)。我建议你看一些教程来开始一个新的活动,然后将它应用到你的代码中。

http://www.c-sharpcorner.com/UploadFile/ef3808/how-to-open-new-activity-on-click-button-by-existing-activi/

于 2014-05-21T02:06:32.590 回答