我正在开发一个应用程序,其中我有一个用 ScrollView 包装的布局。在此布局的片段中,我正在使用 Web 服务从服务器获取数据并将其显示在我的布局中。每当 Web 服务中出现错误或没有可用数据时,我都会向用户显示一个带有相应消息的快捷栏。
问题
我遇到了一个很少发生的问题。当有时数据不可用并显示小吃栏时,我的应用程序崩溃并显示消息的非法状态异常
ScrollView can host only one direct child
这是崩溃日志
java.lang.IllegalStateException: ScrollView can host only one direct child
at android.widget.ScrollView.addView(ScrollView.java:253)
at android.support.design.widget.Snackbar.showView(Snackbar.java:475)
at android.support.design.widget.Snackbar$1.handleMessage(Snackbar.java:162)
at android.os.Handler.dispatchMessage(Handler.java:107)
at android.os.Looper.loop(Looper.java:214)
at android.app.ActivityThread.main(ActivityThread.java:6102)
at java.lang.reflect.Method.invoke(Native Method)
at java.lang.reflect.Method.invoke(Method.java:372)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1028)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:823)
Run Code Online (Sandbox Code Playgroud)
我在许多屏幕中使用这种组合,所以我只发布其中一个 xml 的布局代码
<?xml version="1.0" encoding="utf-8"?>
<ScrollView xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:scrollbars="none">
<LinearLayout xmlns:app="http://schemas.android.com/apk/res-auto"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="@drawable/background"
android:orientation="vertical"
android:paddingBottom="20dp"
android:paddingLeft="20dp"
android:paddingRight="20dp"
android:paddingTop="10dp">
<com.xsinfosol.emergency.progressbar.RopeProgressBar
android:id="@+id/progress_bar1"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="10dp"
app:ropeDynamicLayout="true"
app:ropePrimaryColor="@color/red"
app:ropeSecondaryColor="#20FFFFFF"
app:ropeSlack="0dp"
app:ropeStrokeWidth="10dp" />
<ImageView …Run Code Online (Sandbox Code Playgroud) 当我使用marven项目,编译项目时,出现下一个错误。我不知道为什么,希望有人能帮我解决问题,谢谢!
Servlet.service() for servlet [taotao-manager] in context with path [] threw exception [Request processing failed; nested exception is java.lang.IllegalStateException: Method [getItemList] was discovered in the .class file but cannot be resolved in the class object] with root cause
java.lang.NoSuchMethodException: com.taotao.controller.ItemController.getItemList(java.lang.Integer, java.lang.Integer)
at java.lang.Class.getDeclaredMethod(Class.java:2130)
at org.springframework.core.LocalVariableTableParameterNameDiscoverer$LocalVariableTableVisitor.resolveMember(LocalVariableTableParameterNameDiscoverer.java:245)
at org.springframework.core.LocalVariableTableParameterNameDiscoverer$LocalVariableTableVisitor.visitEnd(LocalVariableTableParameterNameDiscoverer.java:231)
at org.springframework.asm.ClassReader.readMethod(ClassReader.java:1024)
at org.springframework.asm.ClassReader.accept(ClassReader.java:695)
at org.springframework.asm.ClassReader.accept(ClassReader.java:508)
at org.springframework.core.LocalVariableTableParameterNameDiscoverer.inspectClass(LocalVariableTableParameterNameDiscoverer.java:114)
at org.springframework.core.LocalVariableTableParameterNameDiscoverer.getParameterNames(LocalVariableTableParameterNameDiscoverer.java:73)
at org.springframework.core.PrioritizedParameterNameDiscoverer.getParameterNames(PrioritizedParameterNameDiscoverer.java:54)
at org.springframework.core.MethodParameter.getParameterName(MethodParameter.java:437)
at org.springframework.web.method.annotation.AbstractNamedValueMethodArgumentResolver.updateNamedValueInfo(AbstractNamedValueMethodArgumentResolver.java:139)
at org.springframework.web.method.annotation.AbstractNamedValueMethodArgumentResolver.getNamedValueInfo(AbstractNamedValueMethodArgumentResolver.java:119)
at org.springframework.web.method.annotation.AbstractNamedValueMethodArgumentResolver.resolveArgument(AbstractNamedValueMethodArgumentResolver.java:86)
at org.springframework.web.method.support.HandlerMethodArgumentResolverComposite.resolveArgument(HandlerMethodArgumentResolverComposite.java:77)
at org.springframework.web.method.support.InvocableHandlerMethod.getMethodArgumentValues(InvocableHandlerMethod.java:162)
at org.springframework.web.method.support.InvocableHandlerMethod.invokeForRequest(InvocableHandlerMethod.java:129)
at org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod.java:110)
at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.invokeHandleMethod(RequestMappingHandlerAdapter.java:777)
at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.handleInternal(RequestMappingHandlerAdapter.java:706)
at …Run Code Online (Sandbox Code Playgroud) 我正在为 android 中的广播应用程序构建媒体样式通知。这是我的通知代码:
\n\nNotificationCompat.Action action = new android.support.v4.app.NotificationCompat.Action.Builder(imgNotificationAction, "playPause", pendingIntent).build();\n //create new notification\n NotificationCompat.Builder notificationBuilder = (NotificationCompat.Builder) new NotificationCompat.Builder(this)\n .setShowWhen(false)\n .setStyle(new NotificationCompat.MediaStyle()\n .setMediaSession(mediaSession.getSessionToken())\n .setShowActionsInCompactView(0, 1, 2))\n .setColor(ContextCompat.getColor(this, R.color.colorPrimary))\n //.setLargeIcon(largeIcon)\n .setSmallIcon(android.R.drawable.stat_sys_headset)\n .setContentText(radioName)\n .setContentTitle("Igala Radio presents")\n .setContentInfo("Igala language radio")\n .setContentIntent(pendingIntent)\n .addAction(action);\n\n NotificationManager notificationManager = (NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE);\n notificationManager.notify(NOTIFICATION_ID, notificationBuilder.build());\nRun Code Online (Sandbox Code Playgroud)\n\n但我在 Log cat 中遇到以下异常:
\n\nCaused by: java.lang.IllegalArgumentException: setShowActionsInCompactView: action 1 out of bounds (max 0)\n at android.app.Notification$MediaStyle.makeMediaContentView(Notification.java:4493)\n at android.app.Notification$MediaStyle.populateContentView(Notification.java:4427)\n at android.app.Notification$Style.buildStyled(Notification.java:3894)\n at android.app.Notification$MediaStyle.buildStyled(Notification.java:4415)\n at android.app.Notification$Builder.build(Notification.java:3638)\n at android.support.v4.app.NotificationCompatApi21$Builder.build(NotificationCompatApi21.java:132)\n at android.support.v7.app.NotificationCompat$LollipopExtender.build(NotificationCompat.java:484)\n at android.support.v4.app.NotificationCompat$NotificationCompatImplApi21.build(NotificationCompat.java:827)\n …Run Code Online (Sandbox Code Playgroud) android media-player android-notifications illegalstateexception
我在Lenovo K50a40、OS 6.0 和其他一些设备的crashlytics中发现了以下崩溃日志。我无法从此日志中跟踪异常,也无法找到此异常来自我的应用程序的任何线索。我在社区中没有发现任何人之前遇到过类似的问题。如果您对此有所了解,请分享您的见解。
java.lang.IllegalStateException: View with id -1: android.support.design.widget.TabLayout$TabView#onMeasure() did not set the measured dimension by calling setMeasuredDimension()
at android.view.View.measure(View.java:19199)
at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:6124)
at android.widget.LinearLayout.measureChildBeforeLayout(LinearLayout.java:1723)
at android.widget.LinearLayout.measureHorizontal(LinearLayout.java:1275)
at android.widget.LinearLayout.onMeasure(LinearLayout.java:650)
at android.support.design.widget.TabLayout$SlidingTabStrip.onMeasure(TabLayout.java:1859)
at android.view.View.measure(View.java:19169)
at android.widget.HorizontalScrollView.measureChildWithMargins(HorizontalScrollView.java:1259)
at android.widget.FrameLayout.onMeasure(FrameLayout.java:223)
at android.widget.HorizontalScrollView.onMeasure(HorizontalScrollView.java:315)
at android.support.design.widget.TabLayout.onMeasure(TabLayout.java:1030)
at android.view.View.measure(View.java:19169)
at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:6124)
at android.widget.LinearLayout.measureChildBeforeLayout(LinearLayout.java:1723)
at android.widget.LinearLayout.measureVertical(LinearLayout.java:788)
at android.widget.LinearLayout.onMeasure(LinearLayout.java:648)
at android.support.design.widget.AppBarLayout.onMeasure(AppBarLayout.java:234)
at android.view.View.measure(View.java:19169)
at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:6124)
at android.support.design.widget.CoordinatorLayout.onMeasureChild(CoordinatorLayout.java:719)
at android.support.design.widget.AppBarLayout$Behavior.onMeasureChild(AppBarLayout.java:1008)
at android.support.design.widget.AppBarLayout$Behavior.onMeasureChild(AppBarLayout.java:787)
at android.support.design.widget.CoordinatorLayout.onMeasure(CoordinatorLayout.java:789)
at android.view.View.measure(View.java:19169)
at android.widget.RelativeLayout.measureChild(RelativeLayout.java:786)
at android.widget.RelativeLayout.onMeasure(RelativeLayout.java:560)
at android.view.View.measure(View.java:19169)
at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:6124)
at android.widget.FrameLayout.onMeasure(FrameLayout.java:223)
at …Run Code Online (Sandbox Code Playgroud) android illegalstateexception android-view android-tablayout
我用 ViewPager 制作了一个非常简单的 Android 拼图应用程序,让用户可以浏览一系列拼图。我在生产中看到一个错误,我不知道如何重现或调试:
java.lang.IllegalStateException:
at android.support.v4.view.ViewPager.a (ViewPager.java:204)
at android.support.v4.view.ViewPager.c (ViewPager.java:2)
at android.support.v4.view.ViewPager.onMeasure (ViewPager.java:207)
at android.view.View.measure (View.java:22002)
at android.view.ViewGroup.measureChildWithMargins (ViewGroup.java:6580)
at android.widget.FrameLayout.onMeasure (FrameLayout.java:185)
at android.view.View.measure (View.java:22002)
at android.view.ViewGroup.measureChildWithMargins (ViewGroup.java:6580)
at android.support.v7.internal.widget.ActionBarOverlayLayout.onMeasure (ActionBarOverlayLayout.java:257)
at android.view.View.measure (View.java:22002)
at android.view.ViewGroup.measureChildWithMargins (ViewGroup.java:6580)
at android.widget.FrameLayout.onMeasure (FrameLayout.java:185)
at android.view.View.measure (View.java:22002)
at android.view.ViewGroup.measureChildWithMargins (ViewGroup.java:6580)
at android.widget.LinearLayout.measureChildBeforeLayout (LinearLayout.java:1514)
at android.widget.LinearLayout.measureVertical (LinearLayout.java:806)
at android.widget.LinearLayout.onMeasure (LinearLayout.java:685)
at android.view.View.measure (View.java:22002)
at android.view.ViewGroup.measureChildWithMargins (ViewGroup.java:6580)
at android.widget.FrameLayout.onMeasure (FrameLayout.java:185)
at com.android.internal.policy.DecorView.onMeasure (DecorView.java:721)
at android.view.View.measure (View.java:22002)
at android.view.ViewRootImpl.performMeasure (ViewRootImpl.java:2414)
at android.view.ViewRootImpl.performTraversals (ViewRootImpl.java:2159)
at android.view.ViewRootImpl.doTraversal …Run Code Online (Sandbox Code Playgroud) 我们的 grails 应用程序中出现java.lang.IllegalStateException: getAttribute: Session already invalidated少量错误。
我们尝试检查过滤器中的会话是否无效,如果是则重定向到同一页面,但这不起作用。看起来会话在请求过程中失效了。
处理此错误的正确方法是什么?我们应该在顶层放置一个错误处理程序并返回一些 http 状态吗?
在尝试发布我的应用以进行生产时,预发布报告通知我 Pixel 2 Android P Preview 设备上出现错误。该错误与我拥有的自定义 Toast 消息有关,其中说“已将视图添加到窗口管理器”:
java.lang.IllegalStateException: View android.support.constraint.ConstraintLayout{efbeb21 V.E...... ......ID 0,0-788,1124 #7f0900db app:id/toast_correct_container} has already been added to the window manager.
at android.view.WindowManagerGlobal.addView(WindowManagerGlobal.java:328)
at android.view.WindowManagerImpl.addView(WindowManagerImpl.java:93)
at android.widget.Toast$TN.handleShow(Toast.java:499)
at android.widget.Toast$TN$1.handleMessage(Toast.java:403)
at android.os.Handler.dispatchMessage(Handler.java:106)
at androidx.test.espresso.base.Interrogator.a(Interrogator.java:19)
at androidx.test.espresso.base.UiControllerImpl.a(UiControllerImpl.java:142)
at androidx.test.espresso.base.UiControllerImpl.a(UiControllerImpl.java:134)
at androidx.test.espresso.base.UiControllerImpl.a(UiControllerImpl.java:34)
at androidx.test.espresso.action.MotionEvents.a(MotionEvents.java:74)
at androidx.test.espresso.action.MotionEvents.a(MotionEvents.java:52)
at androidx.test.espresso.action.Tap.c(Tap.java:9)
at androidx.test.espresso.action.Tap.a(Tap.java:19)
at androidx.test.espresso.action.Tap$1.b(Tap.java:2)
at androidx.test.espresso.action.GeneralClickAction.perform(GeneralClickAction.java:22)
at androidx.test.espresso.ViewInteraction$SingleExecutionViewAction.perform(ViewInteraction.java:9)
at androidx.test.espresso.ViewInteraction.a(ViewInteraction.java:78)
at androidx.test.espresso.ViewInteraction.a(ViewInteraction.java:94)
at androidx.test.espresso.ViewInteraction$1.call(ViewInteraction.java:3)
at java.util.concurrent.FutureTask.run(FutureTask.java:266)
at android.os.Handler.handleCallback(Handler.java:873)
at android.os.Handler.dispatchMessage(Handler.java:99)
at android.os.Looper.loop(Looper.java:193)
at android.app.ActivityThread.main(ActivityThread.java:6669)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:493)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:858) …Run Code Online (Sandbox Code Playgroud) 我按照此文档将ComposeView直接包含在片段中而没有 xml 布局膨胀,但它给出了java.lang.IllegalStateException。
请帮我解决这个问题。
Android Studio:2020.3.1 Canary 14
compose_version :'1.0.0-beta01'
这是片段的代码:
class RecipeListFragment : Fragment() {
private lateinit var viewModel: RecipeListViewModel
override fun onCreateView(
inflater: LayoutInflater, container: ViewGroup?,
savedInstanceState: Bundle?
): View {
return ComposeView(requireContext()).apply {
setContent {
Column(
modifier = Modifier
.padding(16.dp)
) {
Text(
text = "Recipe List",
style = MaterialTheme.typography.h3
)
}
}
}
}
override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
super.onViewCreated(view, savedInstanceState)
viewModel = ViewModelProvider(this).get(RecipeListViewModel::class.java)
}
Run Code Online (Sandbox Code Playgroud)
} …
illegalstateexception android-fragments kotlin android-jetpack android-jetpack-compose
我想从我的项目中删除一个项目RecyclerView,但我总是收到错误.
java.lang.IllegalStateException:当RecyclerView正在计算布局或滚动时,无法调用此方法
我在用notifyDataSetChanged().我怎么解决这个问题?
这是我的适配器代码
public class ListAdapters extends RecyclerView.Adapter<ListAdapters.MyViewHolder> {
public ArrayList<String> tvdatalist;
Context c;
int pos;
ListAdapters.MyViewHolder myViewHolder;
private LayoutInflater layoutInflater;
int[] arr;
public class MyViewHolder extends RecyclerView.ViewHolder implements View.OnClickListener {
public EditText edttxt;
public CheckBox cb;
public MyViewHolder(View view) {
super(view);
edttxt = (EditText) view.findViewById(R.id.edttxt);
cb = (CheckBox) view.findViewById(R.id.cb);
}
@Override
public void onClick(View v) {
}
}
public ListAdapters(Context c, ArrayList<String> tvdatalist) {
this.c = c;
this.layoutInflater = LayoutInflater.from(c);
this.tvdatalist = tvdatalist;
arr …Run Code Online (Sandbox Code Playgroud) 让我们从Javadocs开始:
表示在非法或不适当的时间调用了方法.换句话说,Java环境或Java应用程序未处于所请求操作的适当状态.
抛出以指示方法已被传递非法或不适当的参数.
上述问题是它们非常黑白.考虑一种方法,其中方法正在解析调用者提供的文件.该文件存在,可读,格式正确.但是,文件中的某些内容不符合业务规则.在这种情况下抛出什么是适当的例外 - IllegalStateException或者IllegalArgumentException?
查看提供断言的各种库,例如Guava Preconditions或Spring Assert,似乎没有达成共识.这里和这里有一些很好的讨论,但没有一个能为我上面提到的常见用例提供确凿的答案.
免责声明:据我所知,我没有展示一些代码,但我认为这是一个特殊而实用的问题,需要考虑进行良好的API设计.让我们假装我们回到了堆栈溢出的好日子,当时人们乐于讨论实用问题,而不是贬低任何看起来不像家庭作业的东西.
java exception illegalargumentexception illegalstateexception
android ×6
java ×2
android-view ×1
exception ×1
grails ×1
jsessionid ×1
kotlin ×1
media-player ×1
scrollview ×1
tomcat ×1