我正在登录页面上工作,基于Androidhive教程和问题是Viewpager
在2布局下工作正常,但对于3布局应用程序将崩溃。
在androidhive教程中使用了2布局,但我想使用3,因为我收到短信然后otp然后注册,所以问题是3rd布局,它不会出现并崩溃。
Androidhive教程链接:第1部分第2部分
以下是代码:
XML
<LinearLayout
android:id="@+id/layout_phone_registration"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:background="@color/colorPrimary"
android:gravity="center_horizontal"
android:orientation="vertical">
<ImageView
android:layout_width="60dp"
android:layout_height="60dp"
android:layout_gravity="center_horizontal"
android:layout_marginBottom="25dp"
android:layout_marginTop="100dp"
android:src="@mipmap/ic_launcher" />
<TextView
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_marginBottom="25dp"
android:gravity="center_horizontal"
android:inputType="textCapWords"
android:paddingLeft="40dp"
android:paddingRight="40dp"
android:text="@string/msg_enter_mobile"
android:textColor="@android:color/white"
android:textSize="14dp" />
<LinearLayout
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:orientation="vertical">
<EditText
android:id="@+id/inputMobile"
android:layout_width="240dp"
android:layout_height="wrap_content"
android:background="@android:color/white"
android:fontFamily="sans-serif-light"
android:hint="@string/lbl_mobile"
android:inputType="phone"
android:maxLength="12"
android:padding="5dp"
android:textColor="@color/colorPrimary"
android:textCursorDrawable="@null"
android:textSize="18dp" />
<Button
android:id="@+id/btn_request_sms"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_gravity="center_horizontal"
android:layout_marginTop="25dp"
android:background="@color/colorPrimaryDark"
android:text="@string/lbl_next"
android:textColor="@android:color/white"
android:textSize="14dp" />
</LinearLayout>
</LinearLayout>
<LinearLayout
android:id="@+id/layout_otp"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:background="@color/colorPrimary"
android:gravity="center_horizontal"
android:orientation="vertical">
<ImageView
android:layout_width="60dp"
android:layout_height="60dp"
android:layout_gravity="center_horizontal"
android:layout_marginBottom="25dp"
android:layout_marginTop="100dp"
android:src="@mipmap/ic_launcher" />
<TextView
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_marginBottom="15dp"
android:gravity="center_horizontal"
android:paddingLeft="40dp"
android:paddingRight="40dp"
android:text="@string/msg_sit_back"
android:textColor="@android:color/white"
android:textSize="16dp" />
<TextView
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_marginBottom="25dp"
android:gravity="center_horizontal"
android:paddingLeft="40dp"
android:paddingRight="40dp"
android:text="@string/msg_manual_otp"
android:textColor="@android:color/white"
android:textSize="12dp" />
<EditText
android:id="@+id/inputOtp"
android:layout_width="120dp"
android:layout_height="wrap_content"
android:background="@android:color/white"
android:fontFamily="sans-serif-light"
android:gravity="center_horizontal"
android:hint="@string/lbl_enter_otp"
android:inputType="number"
android:maxLength="6"
android:padding="10dp"
android:textCursorDrawable="@null"
android:textSize="18dp" />
<Button
android:id="@+id/btn_verify_otp"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center_horizontal"
android:layout_marginTop="25dp"
android:background="@color/colorPrimaryDark"
android:paddingLeft="20dp"
android:paddingRight="20dp"
android:text="@string/lbl_submit"
android:textColor="@android:color/white"
android:textSize="14dp" />
</LinearLayout>
<LinearLayout
android:id="@+id/layout_complete_registration"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:background="@color/colorPrimary"
android:gravity="center_horizontal"
android:orientation="vertical">
<EditText
android:id="@+id/inputName"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_marginBottom="15dp"
android:background="@android:color/white"
android:fontFamily="sans-serif-light"
android:hint="@string/lbl_name"
android:padding="5dp"
android:singleLine="true"
android:textColor="@color/colorPrimary"
android:textSize="18dp" />
<EditText
android:id="@+id/inputAddress"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_marginBottom="15dp"
android:background="@android:color/white"
android:fontFamily="sans-serif-light"
android:hint="@string/lbl_email"
android:padding="5dp"
android:textColor="@color/colorPrimary"
android:textSize="18dp" />
<Button
android:id="@+id/btn_register_user"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_gravity="center_horizontal"
android:layout_marginTop="25dp"
android:background="@color/colorPrimaryDark"
android:text="@string/lbl_next"
android:textColor="@android:color/white"
android:textSize="14dp" />
</LinearLayout>
</ir.atlaspio.atlasdrinkingservice.AdvancedUI.MyViewPager>>
<ProgressBar
android:id="@+id/progressBar"
android:layout_width="30dp"
android:layout_height="30dp"
android:layout_alignParentBottom="true"
android:layout_centerHorizontal="true"
android:layout_gravity="center"
android:layout_marginBottom="60dp"
android:indeterminateTint="@color/colorAccent"
android:indeterminateTintMode="src_atop"
android:visibility="gone" />
<LinearLayout
android:id="@+id/layout_edit_mobile"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_alignParentBottom="true"
android:layout_marginBottom="50dp"
android:gravity="center"
android:orientation="horizontal">
<TextView
android:id="@+id/txt_edit_mobile"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textColor="@android:color/white"
android:textSize="16dp" />
<ImageButton
android:id="@+id/btn_edit_mobile"
android:layout_width="40dp"
android:layout_height="40dp"
android:layout_marginLeft="10dp"
android:background="@null"
android:src="@drawable/ic_exit_to_app_black_24dp" />
</LinearLayout>
Java
private ViewPager viewPager;
private ViewPagerAdapter adapter;
OnCreate =>
viewPager.setCurrentItem(0);
adapter = new ViewPagerAdapter();
viewPager.setAdapter(adapter);
viewPager.setOnPageChangeListener(new ViewPager.OnPageChangeListener() {
@Override
public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) {
}
@Override
public void onPageSelected(int position) {
}
@Override
public void onPageScrollStateChanged(int state) {
}
});
Public Class Activity =>
class ViewPagerAdapter extends PagerAdapter {
@Override
public int getCount() {
return 3;
}
@Override
public boolean isViewFromObject(View view, Object object) {
return view == ((View) object);
}
public Object instantiateItem(View collection, int position) {
int resId = 0;
switch (position) {
case 0:
resId = R.id.layout_phone_registration;
break;
case 1:
resId = R.id.layout_otp;
break;
case 2:
resId = R.id.layout_complete_registration;
break;
}
return findViewById(resId);
}
}
Logcat
08-29 10:48:12.426 4499-4499/ir.atlaspio.atlasdrinkingservice
E/InputEventSender:异常调度完成信号。08-29 10:48:12.426 4499-4499/ViewPager.java:2764E/MessageQueue-JNI:异常在MessageQueue回调: handleReceiveCallback 08-29 10:48:12.436 4499-4499/android.support.v4.view.ViewPager.dispatchKeyEventE/MessageQueue-JNI:ViewPager.java:2738:必需的方法销毁项目没有被覆盖android.view.ViewGroup.dispatchKeyEvent(ViewGroup.java:1408)在android.view.ViewGroup.dispatchKeyEvent(ViewGroup.java:1408)在android.view.ViewGroup.dispatchKeyEvent(ViewGroup.java:1408)在android.view.ViewGroup.dispatchKeyEvent(ViewGroup.java:1408)在android.view.ViewGroup.dispatchKeyEvent(ViewPager.java:625)在android.support.v4.view.ViewPager.setCurrentItem(ViewPager.java:617)在android.support.v4.view.ViewPager.pageRight(ViewPager.java:2888)在android.support.v4.view.ViewPager.arrowScroll(ViewPager.java:2844)在android.support.v4.view.ViewPager.executeKeyEvent(ir.atlaspio.atlasdrinkingservice)在ir.atlaspio.atlasdrinkingservice(java.lang.UnsupportedOperationException)在android.support.v4.view.PagerAdapter.destroyItem(PagerAdapter.java:201)在android.support.v4.view.PagerAdapter.destroyItem(PagerAdapter.java:128)在android.support.v4.view.ViewPager.populate(ViewPager.java:1172)在android.support.v4.view.ViewPager.setCurrentItemInternal(ViewPager.java:663)在android.support.v4.view.ViewPager.setCurrentItemInternal(ViewGroup. java: 1408)在android. view. Viewp. GrouchKeyEvent(ViewGroup. java: 1408)在com. android. interal. Policy. pl. PhoneWindow$DecorView. superDispatchKeyEvent(PhoneWindow. java: 2035)在com. android. interal. Policy. pl在android. view. ViewRootImpl$ViewPostImeInputStage. ProcKeyEvent(ViewRootImpl. java: 3876)在android. view. ViewRootImpl$ViewPostImeInputStage. onProcess(ViewRootImpl. java: 3850)在android. view. ViewRootImpl$InputStage.交付(ViewRootImpl. java: 3423)在android. view. ViewRootImpl$InputStage. onDeliverToNext(ViewRootImpl. java: 3473)在android. view. ViewRootImpl$InputStage.转发(ViewRootImpl. java: 3442)在android. view. ViewRootImpl$AsyncInputStage.转发(ViewRootInput. java: 35MessageQueue. java: 138)在android. os. Looper. cle(Looper. java: 123)在android. app. ActivityThread. main(ActivityThread. java: 5019)在java. lang.反射。方法。调用本机方法)在java. lang.反射。方法。调用(方法。
在< code>ViewPagerAdapter类中重写< code>destroyItem方法,并将obj作为< code > container . remove view(obj as linear layout)移除,其中< code>LinearLayout是您的根布局
@Override
void destroyItem(ViewGroup container, int position, Object obj) {
container.removeView(obj as LinearLayout)
}
根据你的错误
java.lang.UnsupportedOperationException:未重写必需的方法destroyItem
您需要在寻呼机适配器中添加此方法
@Override
void destroyItem (ViewGroup container, int position, Object object){
((ViewPager) container).removeView((View) object);
// more code if needed
}
即使在谷歌搜索了几个小时后,我也无法找出确切的问题。我已经检查了StackOverflow本身的几个答案,但未能找出问题所在。 错误跟踪如下: 主要活动代码: 更新1:我已经做了答案中建议的所有更改,但每当我单击MainActivity中的“跳过指令”按钮时,我的应用程序仍然崩溃。此外,当我从AdminLogin活动中单击“登录”按钮时,应用程序崩溃。我该怎么办? Update2:我提到了什么是N
我让我的学长给我解释,他说, 这是为了防止生产中的崩溃。 我完全不同意。对我来说,这不是防止应用程序崩溃的方法。这表明开发人员不知道他/她在做什么,并有疑问。 由于这个问题得到了很多关注,有些人误解了这个问题(可能是因为我没有清楚地表达它),我打算重新表达它。 以下是开发人员在这里所做的 > 编写并测试一个函数,它可以是一个只是初始化视图的小函数,也可以是一个复杂的函数,测试后它被包裹在块中。即使
当我在1到9之间选择一个数字并在控制台中输入一个数字时,该方法会工作并进行正确的移动。但我的问题是如何避免当我输入一个字母而不是一个数字时,程序就崩溃了。
它给出:内部服务器错误,当我尝试访问网站/管理员或任何其他应用程序尝试使用heroku部署我的应用程序。 这是heroku的日志: 文件“/app/.heroku/python/lib/python3.6/site packages/django/utils/functional.py”,第125行,在_ cast 2019-05-08T15:15:47.484058 00:00应用程序[web.
当用户按下注册按钮并将值传递给HomeActivity.java时,我试图从数据库(在LoginActivity.java上创建)传递变量。在我使用意图附加和捆绑之前,代码工作正常(除了传递变量)。但是当我把新代码,应用程序崩溃后,立即我按下注册按钮 我试图寻找另一个可能的重复问题,但没有一个问题与我的问题相同。他们中的大多数人忘了把活动放在android清单上,但我把LoginActivity放
问题内容: 我一直在开发一个Android应用程序,该应用程序经常使用以防止它崩溃,即使在不需要的地方也是如此。例如, 在视图与被引用,如: 在整个应用程序中都使用这种方法。堆栈跟踪没有打印出来,很难找到问题所在。该应用程序突然关闭而不打印任何堆栈跟踪。 我请我的长辈向我解释一下,他说: 这是为了防止生产崩溃。 我完全不同意 。对我来说,这不是防止应用程序崩溃的方法。它表明开发人员 不 知道自己在