ACRA本身就遇到了一个奇怪的问题:
IllegalStateException: Cannot access ErrorReporter before ACRA#init
我有一个ACRA 4.3.0的应用程序,完美的工作.我将整个应用程序更改为库,因此我可以进行小修改.我创建了一个完全空白的新项目,而不是清单和链接到这个新库.对于尝试此操作的任何其他人,在AcraApplication.java中,您必须删除"resToastText = R.string.crash_toast_text"行并在Acra.init(this)下面添加一个新行;
ACRA.getConfig().setResToastText(R.string.crash_toast_text);
该项目构建良好,在调试中我已经确认ACRA.init(this); 在我的主程序代码之前和错误发生之前运行.在主程序中,我们设置了一些自定义数据:
ACRA.getErrorReporter().putCustomData("Orientation", "L");
它会导致崩溃(或更准确地说,ACRA本身会导致错误)并且不会生成ACRA报告.
任何想法下一步尝试或指示在哪里看?可能是ACRA与库不兼容,如果是这种情况,我可以用不同的方式将它拉出来,但有点挫败了库的目的.
解决方案:Acra.init(this);在init行之前添加以下三行,而不是添加以下行:
ACRAConfiguration config = ACRA.getNewDefaultConfig(this);
config.setResToastText(R.string.crash_toast_text);
ACRA.setConfig(config);
ACRA.init(this);
Run Code Online (Sandbox Code Playgroud)
请注意,这仅适用于v4.3.0及更高版本.
在我的Activity(扩展android.support.v7.app.ActionBarActivity)中,我有一个片段,通常包含在我的视图中,如下所示:
<?xml version="1.0" encoding="utf-8"?>
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
>
<fragment
android:name="com.fragments.SomeFragment"
android:id="@+id/fragment_id"
android:layout_width="match_parent"
android:layout_height="match_parent"
/>
</FrameLayout>
Run Code Online (Sandbox Code Playgroud)
这很好用.
但是我决定将这个片段重用为对话框,所以我通过android.support.v4.app.DialogFragment(来自支持的库)扩展它.
没有任何其他更改我得到了例外
java.lang.RuntimeException: Unable to start activity ComponentInfo{com.ExampleActivity}: java.lang.IllegalStateException: DialogFragment can not be attached to a container view
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2180)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2230)
at android.app.ActivityThread.access$600(ActivityThread.java:141)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1234)
at android.os.Handler.dispatchMessage(Handler.java:99)
at android.os.Looper.loop(Looper.java:137)
at android.app.ActivityThread.main(ActivityThread.java:5041)
at java.lang.reflect.Method.invokeNative(Native Method)
at java.lang.reflect.Method.invoke(Method.java:511)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:793)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:560)
at dalvik.system.NativeStart.main(Native Method)
Caused by: java.lang.IllegalStateException: DialogFragment can not be attached to a container view
at android.support.v4.app.DialogFragment.onActivityCreated(DialogFragment.java:364) …Run Code Online (Sandbox Code Playgroud) android illegalstateexception android-fragments android-dialogfragment android-actionbar-compat
我FragmentTransaction.replace()用来交换碎片进出.该应用程序第一次启动没有问题.IllegalStateException由于savedInstanceState与提交新的片段事务之间存在冲突,因此在旋转设备时会抛出An .没有涉及AsyncTask.
一个StackOverflow问题建议将setContentView()呼叫置于其中onResumeFragments(),但这似乎没有效果.与...相同onPostResume().
另一个StackOverflow问题说要覆盖onConfigurationChanged().从某种意义上说,这是因为没有重新启动Activity,所以不会发生异常.但是,这可以防止具有不同纵向和横向布局的片段在这些布局之间切换.调用setContentView()中onConfigurationChanged()
导致类似的错误(抛出:IllegalArgumentException:二进制XML文件行#25:复制ID为0x12345678,标记为空,或父ID与另一片段)
使用fragmentTransaction.commitAllowingStateLoss()而不是.commit()原因IllegalStateException:Activity已被销毁.
我如何让它工作?
更多异常信息:
了java.lang.RuntimeException:无法启动活动ComponentInfo {MYAPP/myap.MainActivity}:
android.view.InflateException:二进制XML文件行#25:myapp.MainActivity.onResumeFragments(MainActivity.java:450)错误充气类片段
引起by:java.lang.IllegalStateException:无法在myapp.fragments.FragmentChange.onFragmentChange(FragmentChange.java:128)的> android.support.v4.app.FragmentManagerImpl.checkStateLoss(FragmentManager.java:1533)的onSaveInstanceState之后执行此操作at myapp.MainActivity.onNavigationDrawerItemSelected(MainActivity.java:490)myapp.fragments.NavigationDrawerFragment.selectItem(NavigationDrawerFragment.java:197)at myapp.fragments.NavigationDrawerFragment.onCreate(NavigationDrawerFragment.java:78)at myapp.MainActivity.onResumeFragments( MainActivity.java:450)
旋转设备时代码中的顺序是:
MainActivity.onPause()
MainActivity.saveInstanceState()
NavigationDrawerFragment.onSaveInstanceState()
MainActivity.onStop()
MainActivity.onDestroy()
MainActivity.onCreate()
super.onCreate(savedInstanceState);
MainActivity.onResumeFragments()
setContentView()
NavigationDrawerFragment.onCreate()
MainActivity.onNavigationDrawerItemSelected()
fragmentTransaction.commit();
Run Code Online (Sandbox Code Playgroud)
主要活动:
public class MainActivity extends AppCompatActivity implements
NavigationDrawerFragment.NavigationDrawerCallbacks {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
...
}
@Override
public void onNavigationDrawerItemSelected(int position) {
...
FragmentChangeEvent fragmentChangeEvent …Run Code Online (Sandbox Code Playgroud) 我正在为Android 2.3.3制作动态壁纸,它使用了Visualizer类.我已经有一个可用的Visualizer程序版本作为独立工作,但当我将代码放入动态壁纸服务时,我的问题就开始了.以下代码是错误存在的位置:
// Called in my Engine extension's constructor
public void setupVisualizer()
{
mBytes = null;
mVisualizer = new Visualizer(0);
// EDIT
mVisualizer.setEnabled(false); // This fixes the issue
// END EDIT
mVisualizer.setCaptureSize(
Visualizer.getCaptureSizeRange()[1]); // IllegalStateException Thrown
mVisualizer.setDataCaptureListener() {
public void onWaveFormDataCapture(Visualizer visualizer,
byte[] bytes, int samplingRate) {
updateVisualizer(bytes);
}
public void onFftDataCapture(Visualizer visualizer,
bytes[] bytes, int samplingRate) {}
}, Visualizer.getMaxCaptureRate() / 2, true, false);
mVisualizer.setEnabled(true);
}
Run Code Online (Sandbox Code Playgroud)
这是奇怪的部分,当我浏览动态壁纸列表时,我会点击它来查看预览,它工作正常.如果不将其设置为活动壁纸,我会点击后退按钮,然后再次选择它并崩溃.我可以重复这个过程,它只会在其他时间崩溃并且在其他时间运行.如果我选择将其设置为活动壁纸,则每次都会崩溃.
java android visualizer illegalstateexception live-wallpaper
我正在关注http://www.playframework.org/documentation/2.0/JavaForms上的教程
我已经创建了一个类LoginForm.java(而不是示例中的User.class.不是用于持久化的类,只是一个表单值持有者)
package domain;
import static play.data.validation.Constraints.*;
public class LoginForm {
@Required
public String email;
public String password;
}
Run Code Online (Sandbox Code Playgroud)
在我的控制器中我做(作为示例),但我将值设置为空字符串以尝试@Required注释.
Form<LoginForm> loginForm = form(LoginForm.class);
Map<String,String> anyData = new HashMap();
anyData.put("email", "");
anyData.put("password", "");
//Faking a post
LoginForm postedLoginForm = loginForm.bind(anyData).get();
if(loginForm.hasErrors()) {
//Just for this test task, should have another error handling..
return ok("@Required annotation kicked in..");
} else {
return ok("Got form values, email: " + postedLoginForm.email + " password: " + postedLoginForm.password);
}
Run Code Online (Sandbox Code Playgroud)
但在:
LoginForm postedLoginForm …Run Code Online (Sandbox Code Playgroud) 当我试图弄清楚如何使用缓冲区策略时,整体上只是改进了我编写代码和清理内容的方式.当我运行以下代码时,我在"createBufferStrategy(3)"时出错
package Game1Test;
import java.awt.Canvas;
import java.awt.Color;
import java.awt.Graphics;
import java.awt.image.BufferStrategy;
import java.io.IOException;
import javax.swing.*;
public class Base extends Canvas implements Runnable{
private static final long serialVersionUID = 1L;
private boolean running = false;
int ticks = 0;
public Base(JFrame f) {
setSize(f.getWidth(),f.getHeight());
start();
}
public void start(){
running = true;
new Thread(this).start();
}
public void stop(){
}
public void run(){
while(running){
ticks++;
System.out.println(ticks);
render();
try {
Thread.sleep(2);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
public void render(){ …Run Code Online (Sandbox Code Playgroud) 在下面的代码中,我有一个try catch块,尝试使用Iterator从Vector中删除元素.我创建了自己的QueueExtendingVect扩展Vector和实现的类Iterator.
该变量qev1是类的实例QueueExtendingVect.我已经为这个Vector添加了一些元素.
try
{
qev1.iterator().remove();
}
catch(UnsupportedOperationException e)
{
System.out.println("Calling Iterator.remove() and throwing exception.");
}
qev1.enqueue(ci);
qev2.enqueue(ci);
qcv1.enqueue(ci);
qcv2.enqueue(ci);
for (int i = 1; i < 5; i++)
{
if (i % 2 == 0)
{
qev1.enqueue(new CInteger(i+1));
qev2.enqueue(new CInteger(i+1));
qcv1.enqueue(new CInteger(i+1));
qcv2.enqueue(new CInteger(i+1));
}
else
{
qev1.enqueue(new Date(i*i));
qev2.enqueue(new Date(i*i));
qcv1.enqueue(new Date(i*i));
qcv2.enqueue(new Date(i*i));
}
}
Run Code Online (Sandbox Code Playgroud)
在这段代码中,我向Vector qev1添加了一些元素.其他变量在代码的其他部分.
但是,当我运行我的程序时,我在运行时得到一个IllegalStateException.我不确定这意味着什么.
请帮我解决这个问题.我刚刚从开发者控制台android vitals得到了这个.我不知道如何重现崩溃.我只想知道它为什么会发生,或者如果可能的话我该如何解决它.
java.lang.RuntimeException:
at android.app.LoadedApk.makeApplication (LoadedApk.java:612)
at android.app.ActivityThread.handleBindApplication (ActivityThread.java:4673)
at android.app.ActivityThread.access$1500 (ActivityThread.java:162)
at android.app.ActivityThread$H.handleMessage (ActivityThread.java:1409)
at android.os.Handler.dispatchMessage (Handler.java:102)
at android.os.Looper.loop (Looper.java:135)
at android.app.ActivityThread.main (ActivityThread.java:5422)
at java.lang.reflect.Method.invoke (Method.java)
at java.lang.reflect.Method.invoke (Method.java:372)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run (ZygoteInit.java:914)
at com.android.internal.os.ZygoteInit.main (ZygoteInit.java:707)
Caused by: java.lang.IllegalStateException:
at android.app.LoadedApk.initializeJavaContextClassLoader (LoadedApk.java:458)
at android.app.LoadedApk.makeApplication (LoadedApk.java:604)
Run Code Online (Sandbox Code Playgroud) 我正在尝试新的 Jetpack compose,但是当我切换到 时kapt,出现此错误:java.lang.IllegalStateException: Backend Internal error: Exception during code generation.
它与 annotationProcessor 一起工作得很好,但我想在这个项目中使用 kapt。我将不胜感激。
我知道很多问题都会导致上述错误,但我认为这个问题是jetpack和kapt
我在.gradle下面添加了我的文件:
apply plugin: 'com.android.application'
apply plugin: 'kotlin-android'
apply plugin: 'kotlin-android-extensions'
apply plugin: 'kotlin-kapt'
android {
compileSdkVersion 29
buildToolsVersion "29.0.2"
defaultConfig {
applicationId "me.jerryhanks.pinchme"
minSdkVersion 26
targetSdkVersion 29
versionCode 1
versionName "1.0"
testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
// javaCompileOptions {
// annotationProcessorOptions {
// arguments = [
// "room.schemaLocation":"$projectDir/schemas".toString(),
// "room.incremental":"true",
// "room.expandProjection":"true"]
// }
// }
}
buildTypes …Run Code Online (Sandbox Code Playgroud) android illegalstateexception kotlin android-jetpack android-jetpack-compose
尝试读取 editText 内容时 AlertDialog(Material) 崩溃。
警报对话框:
MaterialAlertDialogBuilder(activity)
.setTitle(title)
.setMessage(message)
.setView(R.layout.dialog_settings_entry)
.setPositiveButton(getString(R.string.text_change)) { dialog, which ->
etUserInput.hint = message
sgr = etUserInput.text.toString() // << crashes here
dialog.dismiss()
}
.setNegativeButton(getString(android.R.string.cancel)) { dialog, _ ->
dialog.dismiss()
}
.show()
Run Code Online (Sandbox Code Playgroud)
单击肯定按钮结果如下:
java.lang.IllegalStateException: etUserInput must not be null
at com.home.profile.SettingsFragment$buildAlertDialog$1.onClick(SettingsFragment.kt:332)
at androidx.appcompat.app.AlertController$ButtonHandler.handleMessage(AlertController.java:167)
Run Code Online (Sandbox Code Playgroud)
该etUserInput是在一个单独的布局简单EDITTEXT。不确定崩溃原因。希望对它有任何了解或任何有用的材料样本。
android android-edittext illegalstateexception material-dialog
android ×7
java ×4
acra ×1
buffer ×1
init ×1
iterator ×1
kotlin ×1
validation ×1
visualizer ×1