gpt4 book ai didi

java - 使用 swipeview 时如何将 Java 文件链接到 UI xml 文件?

转载 作者:行者123 更新时间:2023-12-01 12:57:19 24 4
gpt4 key购买 nike

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

但是,当我使用 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 文件?

最佳答案

在此代码中,您并未启动 Activity ,而只是膨胀了不同的布局。

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

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

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

然后在 onCreate 方法中您应该设置适配器或任何您需要执行的设置。 Activity 应该是顶层且独立的,而不是由适配器管理。

编辑您想要执行以下操作:开始启动 Activity ,这可能是您正在谈论的 Activity 之一。滑动时启动第二个 Activity (不仅仅是加载布局),向后滑动时启动第一个 Activity 。如果您不想将 Activity 保留在堆栈中(按返回箭头返回到它),您可以实现 onActivityResult() 来 finish() Activity (关闭它)。我建议您查看一些有关开始新 Activity 的教程,然后将其应用到您的代码中。

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

关于java - 使用 swipeview 时如何将 Java 文件链接到 UI xml 文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23772071/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com