在本文中,我们将带你了解android–具有不确定ProgressBar的UI的“java.lang.RuntimeException:无法启动intent”在这篇文章中,同时我们还将给您一些技巧,以
在本文中,我们将带你了解android – 具有不确定ProgressBar的UI的“java.lang.RuntimeException:无法启动intent”在这篇文章中,同时我们还将给您一些技巧,以帮助您实现更有效的Android FATAL EXCEPTION MAIN:java.lang.RuntimeException:无法启动活动ComponentInfo、Android java.lang.RuntimeException:无法实例化活动ComponentInfo … java.lang.NullPointerException、Android Proguard ExceptionInInitializerError和RuntimeException、Android Robolectric – ContentProvider中queryBuilder.query()中的RuntimeException / InstantiationException。
本文目录一览:- android – 具有不确定ProgressBar的UI的“java.lang.RuntimeException:无法启动intent”
- Android FATAL EXCEPTION MAIN:java.lang.RuntimeException:无法启动活动ComponentInfo
- Android java.lang.RuntimeException:无法实例化活动ComponentInfo … java.lang.NullPointerException
- Android Proguard ExceptionInInitializerError和RuntimeException
- Android Robolectric – ContentProvider中queryBuilder.query()中的RuntimeException / InstantiationException
android – 具有不确定ProgressBar的UI的“java.lang.RuntimeException:无法启动intent”
05-26 15:22:48.504 1003-1016/? I/TestRunner﹕
java.lang.RuntimeException: Could not launch intent Intent {
act=android.intent.action.MAIN flg=0x14000000
cmp=com.cookbrite.dev/com.cookbrite.ui.HomeListActivity } within 45
seconds. Perhaps the main thread has not gone idle within a reasonable
amount of time? There Could be an animation or something constantly
repainting the screen. Or the activity is doing network calls on
creation? See the threaddump logs. For your reference the last time
the event queue was idle before your activity launch request was
1432668122421 and Now the last time the queue went idle was:
1432668122421. If these numbers are the same your activity might be hogging the event queue.
堆栈跟踪是:
05-26 15:22:48.504 1003-1016/? I/TestRunner﹕ java.lang.RuntimeException: Could not launch intent Intent { act=android.intent.action.MAIN flg=0x14000000 cmp=com.cookbrite.dev/com.cookbrite.ui.HomeListActivity } within 45 seconds. Perhaps the main thread has not gone idle within a reasonable amount of time? There Could be an animation or something constantly repainting the screen. Or the activity is doing network calls on creation? See the threaddump logs. For your reference the last time the event queue was idle before your activity launch request was 1432668122421 and Now the last time the queue went idle was: 1432668122421. If these numbers are the same your activity might be hogging the event queue. at android.support.test.runner.MonitoringInstrumentation.startActivitySync(MonitoringInstrumentation.java:274) at android.test.InstrumentationTestCase.launchActivityWithIntent(InstrumentationTestCase.java:119) at android.test.InstrumentationTestCase.launchActivity(InstrumentationTestCase.java:97) at android.test.ActivityInstrumentationTestCase2.getActivity(ActivityInstrumentationTestCase2.java:104) at com.cookbrite.step2_functional.ui.homelist.HomeListFragmentLoadingTest.testLoadingSpinner(HomeListFragmentLoadingTest.java:40) at java.lang.reflect.Method.invokeNative(Native Method) at java.lang.reflect.Method.invoke(Method.java:525) at android.test.InstrumentationTestCase.runMethod(InstrumentationTestCase.java:214) at android.test.InstrumentationTestCase.runTest(InstrumentationTestCase.java:199) at android.test.ActivityInstrumentationTestCase2.runTest(ActivityInstrumentationTestCase2.java:192) at com.cookbrite.util.BaseBlackBoxTest.doRunTest(BaseBlackBoxTest.java:300) at com.cookbrite.util.BaseBlackBoxTest.access$000(BaseBlackBoxTest.java:44) at com.cookbrite.util.BaseBlackBoxTest$1.call(BaseBlackBoxTest.java:271) at java.util.concurrent.FutureTask.run(FutureTask.java:234) at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1080) at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:573) at java.lang.Thread.run(Thread.java:841)
由上述超时触发的线程转储显示ProgressBar似乎涉及:
05-26 15:22:48.135 1003-1018/? E/THREAD_STATE﹕ Thread[main,5,main] android.graphics.Canvas.native_drawBitmap(Native Method) android.graphics.Canvas.drawBitmap(Canvas.java:1160) android.graphics.drawable.BitmapDrawable.draw(BitmapDrawable.java:440) android.graphics.drawable.RotateDrawable.draw(RotateDrawable.java:88) android.graphics.drawable.LayerDrawable.draw(LayerDrawable.java:345) android.widget.ProgressBar.onDraw(ProgressBar.java:1052) android.view.View.draw(View.java:13944) android.view.View.draw(View.java:13825) android.view.ViewGroup.drawChild(ViewGroup.java:3086) android.view.ViewGroup.dispatchDraw(ViewGroup.java:2923) android.view.View.draw(View.java:13823) android.view.ViewGroup.drawChild(ViewGroup.java:3086) android.view.ViewGroup.dispatchDraw(ViewGroup.java:2923) android.view.View.draw(View.java:13947) android.view.View.draw(View.java:13825) android.view.ViewGroup.drawChild(ViewGroup.java:3086) android.view.ViewGroup.dispatchDraw(ViewGroup.java:2923) android.view.View.draw(View.java:13823) android.view.ViewGroup.drawChild(ViewGroup.java:3086) android.view.ViewGroup.dispatchDraw(ViewGroup.java:2923) android.view.View.draw(View.java:13947) android.widget.FrameLayout.draw(FrameLayout.java:467) android.view.View.draw(View.java:13825) android.view.ViewGroup.drawChild(ViewGroup.java:3086) android.view.ViewGroup.dispatchDraw(ViewGroup.java:2923) android.view.View.draw(View.java:13823) android.view.ViewGroup.drawChild(ViewGroup.java:3086) android.view.ViewGroup.dispatchDraw(ViewGroup.java:2923) android.view.View.draw(View.java:13947) android.widget.FrameLayout.draw(FrameLayout.java:467) com.android.internal.policy.impl.PhoneWindow$DecorView.draw(PhoneWindow.java:2224) android.view.ViewRootImpl.drawSoftware(ViewRootImpl.java:2482) android.view.ViewRootImpl.draw(ViewRootImpl.java:2395) android.view.ViewRootImpl.performDraw(ViewRootImpl.java:2239) android.view.ViewRootImpl.performTraversals(ViewRootImpl.java:1872) android.view.ViewRootImpl.doTraversal(ViewRootImpl.java:1004) android.view.ViewRootImpl$TraversalRunnable.run(ViewRootImpl.java:5481) android.view.Choreographer$CallbackRecord.run(Choreographer.java:749) android.view.Choreographer.doCallbacks(Choreographer.java:562) android.view.Choreographer.doFrame(Choreographer.java:532) android.view.Choreographer$FramedisplayEventReceiver.run(Choreographer.java:735) android.os.Handler.handleCallback(Handler.java:730) android.os.Handler.dispatchMessage(Handler.java:92) android.os.Looper.loop(Looper.java:137) android.app.ActivityThread.main(ActivityThread.java:5103) java.lang.reflect.Method.invokeNative(Native Method) java.lang.reflect.Method.invoke(Method.java:525) com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:737) com.android.internal.os.ZygoteInit.main(ZygoteInit.java:553) dalvik.system.NativeStart.main(Native Method) Thread[Binder_2,main] dalvik.system.NativeStart.run(Native Method) Thread[JDWP,system] dalvik.system.NativeStart.run(Native Method) Thread[pool-1-thread-1,main] java.lang.Object.wait(Native Method) java.lang.Object.wait(Object.java:364) android.app.Instrumentation.startActivitySync(Instrumentation.java:403) android.support.test.runner.MonitoringInstrumentation.access$101(MonitoringInstrumentation.java:69) android.support.test.runner.MonitoringInstrumentation$3.call(MonitoringInstrumentation.java:265) android.support.test.runner.MonitoringInstrumentation$3.call(MonitoringInstrumentation.java:262) java.util.concurrent.FutureTask.run(FutureTask.java:234) java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1080) java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:573) java.lang.Thread.run(Thread.java:841) Thread[pool-5-thread-1,main] dalvik.system.VMStack.getThreadStackTrace(Native Method) java.lang.Thread.getStackTrace
解决方法
我们使用进度条来表示我们在多大程度上及时(例如30天周期中的第7天,因此我们的进度条从未完成).为避免此问题,我们必须为我们的应用程序使用不同的API级别.我们似乎只对API级别为21的仿真器出现此问题.一旦我们将仿真器切换到API级别19,我们的测试就成功了.
注意:我们在使用普通视图更改progressBar方面也取得了一些成功,但我们认为这比我们喜欢的更糟糕.
Android FATAL EXCEPTION MAIN:java.lang.RuntimeException:无法启动活动ComponentInfo
我是编程android的nubie,我知道这里有4m是很多页面为我的问题打乱解决方案,但现在我输了2天仍然没有得到解决方案.请帮我!
首先是我的错误:
01-02 11:08:27.314: D/AndroidRuntime(1045): Shutting down VM
01-02 11:08:27.314: W/dalvikvm(1045): threadid=1: thread exiting with uncaught exception (group=0x409e61f8)
01-02 11:08:27.324: E/AndroidRuntime(1045): FATAL EXCEPTION: main
01-02 11:08:27.324: E/AndroidRuntime(1045): java.lang.RuntimeException: Unable to instantiate activity ComponentInfo{com.example.wifiscan/com.example.wifiscan.activity_wifi_scan}: java.lang.classNotFoundException: com.example.wifiscan.activity_wifi_scan
01-02 11:08:27.324: E/AndroidRuntime(1045): at android.app.ActivityThread.performlaunchActivity(ActivityThread.java:1880)
01-02 11:08:27.324: E/AndroidRuntime(1045): at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:1981)
01-02 11:08:27.324: E/AndroidRuntime(1045): at android.app.ActivityThread.access$600(ActivityThread.java:123)
01-02 11:08:27.324: E/AndroidRuntime(1045): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1147)
01-02 11:08:27.324: E/AndroidRuntime(1045): at android.os.Handler.dispatchMessage(Handler.java:99)
01-02 11:08:27.324: E/AndroidRuntime(1045): at android.os.Looper.loop(Looper.java:137)
01-02 11:08:27.324: E/AndroidRuntime(1045): at android.app.ActivityThread.main(ActivityThread.java:4424)
01-02 11:08:27.324: E/AndroidRuntime(1045): at java.lang.reflect.Method.invokeNative(Native Method)
01-02 11:08:27.324: E/AndroidRuntime(1045): at java.lang.reflect.Method.invoke(Method.java:511)
01-02 11:08:27.324: E/AndroidRuntime(1045): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:784)
01-02 11:08:27.324: E/AndroidRuntime(1045): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:551)
01-02 11:08:27.324: E/AndroidRuntime(1045): at dalvik.system.NativeStart.main(Native Method)
01-02 11:08:27.324: E/AndroidRuntime(1045): Caused by: java.lang.classNotFoundException: com.example.wifiscan.activity_wifi_scan
01-02 11:08:27.324: E/AndroidRuntime(1045): at dalvik.system.BaseDexClassLoader.findClass(BaseDexClassLoader.java:61)
01-02 11:08:27.324: E/AndroidRuntime(1045): at java.lang.classLoader.loadClass(ClassLoader.java:501)
01-02 11:08:27.324: E/AndroidRuntime(1045): at java.lang.classLoader.loadClass(ClassLoader.java:461)
01-02 11:08:27.324: E/AndroidRuntime(1045): at android.app.Instrumentation.newActivity(Instrumentation.java:1023)
01-02 11:08:27.324: E/AndroidRuntime(1045): at android.app.ActivityThread.performlaunchActivity(ActivityThread.java:1871)
01-02 11:08:27.324: E/AndroidRuntime(1045): ... 11 more
我的WifiScan:
public class WifiScan extends Activity implements OnClickListener {
WifiManager wifi;
ListView lv;
TextView textStatus;
Button buttonScan;
int size = 0;
List<ScanResult> results;
String ITEM_KEY = "key";
ArrayList<HashMap<String, String>> arraylist = new ArrayList<HashMap<String, String>>();
SimpleAdapter adapter;
/* Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_wifi_scan);
buttonScan = (Button) findViewById(R.id.scan);
buttonScan.setonClickListener(this);
lv = (ListView)findViewById(R.id.list);
wifi = (WifiManager) getSystemService(Context.WIFI_SERVICE);
if (wifi.isWifiEnabled() == false)
{
Toast.makeText(getApplicationContext(), "wifi is disabled..making it enabled", Toast.LENGTH_LONG).show();
wifi.setWifiEnabled(true);
}
wifi.startScan(); //js dopisal
// this.adapter = new SimpleAdapter(WiFiDemo.this, arraylist, R.layout.row, new String[] { ITEM_KEY }, new int[] { R.id.list_value });
lv.setAdapter(this.adapter);
registerReceiver(new broadcastReceiver()
{
@Override
public void onReceive(Context c, Intent intent)
{
results = wifi.getScanResults();
size = results.size();
}
}, new IntentFilter(WifiManager.SCAN_RESULTS_AVAILABLE_ACTION));
}
public void onClick(View view)
{
arraylist.clear();
wifi.startScan();
Toast.makeText(this, "Scanning...." + size, Toast.LENGTH_SHORT).show();
try
{
size = size - 1;
while (size >= 0)
{
HashMap<String, String> item = new HashMap<String, String>();
item.put(ITEM_KEY, results.get(size).SSID + " " + results.get(size).capabilities);
arraylist.add(item);
size--;
adapter.notifyDataSetChanged();
}
}
catch (Exception e)
{ }
}
}
我的activity_wifi_scan.xml文件:
<TableLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/TableLayout1"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:paddingBottom="@dimen/activity_vertical_margin"
android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
tools:context=".WifiScan" >
<Button
android:id="@+id/scan"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:onClick="scan"
android:text="SCAN" />
<ListView
android:id="@+id/list"
android:layout_width="match_parent"
android:layout_height="wrap_content" >
</ListView>
</TableLayout>
和我的AndroidManifest文件:
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.example.wifiscan"
android:versionCode="1"
android:versionName="1.0" >
<uses-premission android:name="android.permission.ACCESS_WIFI_STATE"/>
<uses-permission android:name="android.permission.WAKE_LOCK"/>
<uses-permission android:name="android.permission.INTERNET"/>
<uses-permission android:name="android.permission.CHANGE_WIFI_STATE"/>
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>
<uses-permission android:name="android.permission.INTERNET"></uses-permission>
<uses-permission android:name="android.permission.CHANGE_WIFI_STATE"></uses-permission>
<uses-permission android:name="android.permission.READ_PHONE_STATE"> </uses-permission>
<uses-permission android:name="android.permission.INTERNET"> </uses-permission>
<uses-sdk
android:minSdkVersion="8"
android:targetSdkVersion="17" />
<application
android:allowBackup="true"
android:icon="@drawable/ic_launcher"
android:label="@string/app_name"
android:theme="@style/AppTheme" >
<activity android:name=".activity_wifi_scan">
<intent-filter>
<action android:name="android.intent.action.MAIN"></action>
<category android:name="android.intent.category.LAUNCHER"></category>
<data />
</intent-filter>
</activity>
<receiver android:name=".activity_wifi_scan">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER"/>
<action android:name="android.net.wifi.WIFI_STATE_CHANGED"/>
</intent-filter>
</receiver>
</application>
</manifest>
解决方法:
您的活动名称是WifiScan但您已将其声明为.activity_wifi_scan更改它并重试.
更改<活动>要素:
<activity android:name=".WifiScan">
<intent-filter>
<action android:name="android.intent.action.MAIN"></action>
<category android:name="android.intent.category.LAUNCHER"></category>
<data />
</intent-filter>
</activity>
Android java.lang.RuntimeException:无法实例化活动ComponentInfo … java.lang.NullPointerException
出于某种原因,每次尝试启动我的应用程序时,我都会出现以下错误:
Unable to instantiate activity ComponentInfo{com.example.lifeahead/com.example.lifeahead.MainActivity}:java.lang.NullPointerException
我检查了清单文件,并添加了所有活动.
我启动应用程序时使用的唯一方法是:
private void logIn(){
Button logIn = (Button) findViewById(R.id.login);
logIn.setonClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
// Todo Auto-generated method stub
Intent loginIntent = new Intent(MainActivity.this, HomeActivity.class);
loginIntent.putExtra("cmUN", cmUN);
loginIntent.putExtra("cmPW", cmPW);
startActivity(loginIntent);
}
});
}
这是onCreate:
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
if (savedInstanceState == null) {
getSupportFragmentManager().beginTransaction()
.add(R.id.container, new PlaceholderFragment()).commit();
}
logIn();
}
完整日志:
Ë
/AndroidRuntime(1607): FATAL EXCEPTION: main
E/AndroidRuntime(1607): Process: com.example.lifeahead, PID: 1607
E/AndroidRuntime(1607): java.lang.RuntimeException: Unable to instantiate activity ComponentInfo{com.example.lifeahead/com.example.lifeahead.MainActivity}: java.lang.NullPointerException
E/AndroidRuntime(1607): at android.app.ActivityThread.performlaunchActivity(ActivityThread.java:2121)
E/AndroidRuntime(1607): at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2245)
E/AndroidRuntime(1607): at android.app.ActivityThread.access$800(ActivityThread.java:135)
E/AndroidRuntime(1607): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1196)
E/AndroidRuntime(1607): at android.os.Handler.dispatchMessage(Handler.java:102)
E/AndroidRuntime(1607): at android.os.Looper.loop(Looper.java:136)
E/AndroidRuntime(1607): at android.app.ActivityThread.main(ActivityThread.java:5017)
E/AndroidRuntime(1607): at java.lang.reflect.Method.invokeNative(Native Method)
E/AndroidRuntime(1607): at java.lang.reflect.Method.invoke(Method.java:515)
E/AndroidRuntime(1607): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:779)
E/AndroidRuntime(1607): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:595)
E/AndroidRuntime(1607): at dalvik.system.NativeStart.main(Native Method)
E/AndroidRuntime(1607): Caused by: java.lang.NullPointerException
E/AndroidRuntime(1607): at android.app.Activity.findViewById(Activity.java:1884)
E/AndroidRuntime(1607): at com.example.lifeahead.MainActivity.<init>(MainActivity.java:22)
E/AndroidRuntime(1607): at java.lang.class.newInstanceImpl(Native Method)
E/AndroidRuntime(1607): at java.lang.class.newInstance(Class.java:1208)
E/AndroidRuntime(1607): at android.app.Instrumentation.newActivity(Instrumentation.java:1061)
E/AndroidRuntime(1607): at android.app.ActivityThread.performlaunchActivity(ActivityThread.java:2112)
E/AndroidRuntime(1607): ... 11 more
我感谢所有帮助!
解决方法:
stacktrace告诉你
Button logIn = (Button) findViewById(R.id.login);
findViewById返回的对象为null,因为您拥有的唯一方法是logIn(). findViewById返回null的唯一原因是因为您正在查找不属于当前活动的视图层次结构的视图
Android Proguard ExceptionInInitializerError和RuntimeException
我想混淆我的.apk,我和Proguard有些麻烦.使用eclipse我启用了这个:
# To enable ProGuard to shrink and obfuscate your code, uncomment this (available properties: sdk.dir, user.home):
proguard.config=${sdk.dir}/tools/proguard/proguard-android.txt:proguard-project.txt
我正在使用4个外部库:
> android-support-v4.jar
>九岁的android-lib.jar
> gson-2.2.2.jar
> commons-io-2.4.jar
我想我在使用gson时遇到了麻烦:
private static Type MY_DATA_TYPE = new Typetoken<Pair<Map<Point, Void>, Integer>>() {}.getType();
我每次使用它:
FATAL EXCEPTION: main
java.lang.ExceptionInInitializerError at com.myapp.MyActivity.onCreate(UnkNown Source)
...
Caused by: java.lang.RuntimeException: Missing type parameter.
at com.google.gson.reflect.Typetoken.getSuperclasstypeParameter(UnkNown Source)
at com.google.gson.reflect.Typetoken.<init>(UnkNown Source)
我正在使用这个选项,但我想它不会有帮助:
-keepattributes Exceptions, InnerClasses, *Annotation*, EnclosingMethod
-dontskipnonpubliclibraryclassmembers
-libraryjars .../libs/android-support-v4.jar
-libraryjars .../libs/nine-old-android-lib.jar
-libraryjars .../libs/gson-2.2.2.jar
-libraryjars .../libs/commons-io-2.4.jar
-keep class java.** { *; }
-keep class android.** { *; }
-keep class org.** { *; }
-keep class com.google.** { *; }
-keep class com.facebook.** { *; }
-keep class com.nineoldandroids.** { *; }
我该如何解决这个问题并创建一个可以正常工作的混淆的.apk?
谢谢你的时间.
解决方法:
猜猜这是一个gson“问题”,这是解决方案:
-keepattributes Signature
-keep class sun.misc.Unsafe { *; }
-keep class com.google.gson.examples.android.model.** { *; }
感谢https://groups.google.com/forum/#!topic/google-gson/6XuHfOoZIKo
Android Robolectric – ContentProvider中queryBuilder.query()中的RuntimeException / InstantiationException
正在测试的方法在实际应用中起作用!
这是API 17 r2和RoboLectric:
robolectric-2.0-α-3-20130417.013705-46-罐与 – dependencies.jar
@Override public Cursor query(Uri uri,String[] projection,String selection,String[] selectionArgs,String sortOrder) { Log.d(Constants.TAG,"MyContentProvider.query()"); switch(matcher.match(uri)) { case ITEM: // OK selection = "_id = ?"; selectionArgs = new String[]{ Long.toString(ContentUris.parseId(uri)) }; case ITEMS: // OK break; default: throw new IllegalArgumentException("Did not recognize URI " + uri); } // build the query with sqliteQueryBuilder sqliteQueryBuilder qBuilder = new sqliteQueryBuilder(); qBuilder.setTables(TABLE_NAME); // query the database and get result in cursor final sqliteDatabase db = mDatabase.getReadableDatabase(); Cursor resultCursor = qBuilder.query(db,// Line 112 in trace projection,selection,selectionArgs,null,sortOrder,null); resultCursor.setNotificationUri(getContext().getContentResolver(),uri); return resultCursor; }
这是追溯:
java.lang.RuntimeException: java.lang.InstantiationException at org.robolectric.bytecode.ShadowWrangler.createShadowFor(ShadowWrangler.java:300) at org.robolectric.bytecode.ShadowWrangler.initializing(ShadowWrangler.java:74) at org.robolectric.bytecode.RobolectricInternals.initializing(RobolectricInternals.java:90) at android.database.sqlite.sqliteQuery.$$robo$init(sqliteQuery.java) at android.database.sqlite.sqliteClosable.<init>(sqliteClosable.java:26) at android.database.sqlite.sqliteProgram.<init>(sqliteProgram.java:41) at android.database.sqlite.sqliteQuery.<init>(sqliteQuery.java:37) at android.database.sqlite.sqliteDirectCursorDriver.query(sqliteDirectCursorDriver.java:44) at android.database.sqlite.sqliteDatabase.rawQueryWithFactory(sqliteDatabase.java:1314) at android.database.sqlite.sqliteQueryBuilder.query(sqliteQueryBuilder.java:400) at android.database.sqlite.sqliteQueryBuilder.query(sqliteQueryBuilder.java:333) at com.example.readingsprovider.ReadingsContentProvider.query(ReadingsContentProvider.java:112) at com.example.readingsprovider.test.ContentProviderTest.testUpdateMultipleWithoutWhere(ContentProviderTest.java:110) at org.junit.runners.model.FrameworkMethod$1.runReflectiveCall(FrameworkMethod.java:44) at org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:15) at org.junit.runners.model.FrameworkMethod.invokeExplosively(FrameworkMethod.java:41) at org.junit.internal.runners.statements.InvokeMethod.evaluate(InvokeMethod.java:20) at org.robolectric.RobolectricTestRunner$2.evaluate(RobolectricTestRunner.java:267) at org.junit.runners.BlockJUnit4ClassRunner.runNotIgnored(BlockJUnit4ClassRunner.java:79) at org.junit.runners.BlockJUnit4ClassRunner.runchild(BlockJUnit4ClassRunner.java:71) at org.junit.runners.BlockJUnit4ClassRunner.runchild(BlockJUnit4ClassRunner.java:49) at org.junit.runners.ParentRunner$3.run(ParentRunner.java:193) at org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:52) at org.junit.runners.ParentRunner.runchildren(ParentRunner.java:191) at org.junit.runners.ParentRunner.access$000(ParentRunner.java:42) at org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:184) at org.robolectric.RobolectricTestRunner$1.evaluate(RobolectricTestRunner.java:202) at org.junit.runners.ParentRunner.run(ParentRunner.java:236) at org.eclipse.jdt.internal.junit4.runner.JUnit4TestReference.run(JUnit4TestReference.java:50) at org.eclipse.jdt.internal.junit.runner.TestExecution.run(TestExecution.java:38) at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:467) at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:683) at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.run(RemoteTestRunner.java:390) at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.main(RemoteTestRunner.java:197) Caused by: java.lang.InstantiationException at sun.reflect.InstantiationExceptionConstructorAccessorImpl.newInstance(InstantiationExceptionConstructorAccessorImpl.java:30) at java.lang.reflect.Constructor.newInstance(Constructor.java:513) at java.lang.class.newInstance0(Class.java:357) at java.lang.class.newInstance(Class.java:310) at org.robolectric.bytecode.ShadowWrangler.createShadowFor(ShadowWrangler.java:293) at org.robolectric.bytecode.ShadowWrangler.initializing(ShadowWrangler.java:74) at org.robolectric.bytecode.RobolectricInternals.initializing(RobolectricInternals.java:90) at android.database.sqlite.sqliteQuery.$$robo$init(sqliteQuery.java) at android.database.sqlite.sqliteClosable.<init>(sqliteClosable.java:26) at android.database.sqlite.sqliteProgram.<init>(sqliteProgram.java:41) at android.database.sqlite.sqliteQuery.<init>(sqliteQuery.java:37) at android.database.sqlite.sqliteDirectCursorDriver.$$robo$$sqliteDirectCursorDriver_7ac1_query(sqliteDirectCursorDriver.java:44) at android.database.sqlite.sqliteDirectCursorDriver.query(sqliteDirectCursorDriver.java) at android.database.sqlite.sqliteDatabase.$$robo$$sqliteDatabase_ab15_rawQueryWithFactory(sqliteDatabase.java:1314) at android.database.sqlite.sqliteDatabase.rawQueryWithFactory(sqliteDatabase.java) at android.database.sqlite.sqliteQueryBuilder.$$robo$$sqliteQueryBuilder_ba4d_query(sqliteQueryBuilder.java:400) at android.database.sqlite.sqliteQueryBuilder.query(sqliteQueryBuilder.java) at android.database.sqlite.sqliteQueryBuilder.$$robo$$sqliteQueryBuilder_ba4d_query(sqliteQueryBuilder.java:333) at android.database.sqlite.sqliteQueryBuilder.query(sqliteQueryBuilder.java) at com.example.readingsprovider.ReadingsContentProvider.query(ReadingsContentProvider.java:112) at com.example.readingsprovider.test.ContentProviderTest.testUpdateMultipleWithoutWhere(ContentProviderTest.java:110) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) at java.lang.reflect.Method.invoke(Method.java:597) ... 21 more
可以告诉我这是否是Robolectric的限制,还是我的不好?非常感谢!
附:如果Reflection API将失败的类名放在InstantiationException消息中,难道不是梦幻般的吗?
解决方法
1.创建自定义sqliteShadow
@Implements(value = sqliteDatabase.class,inheritImplementationMethods = true) public class CustomsqliteShadow extends ShadowsqliteDatabase { @Implementation public Cursor rawQueryWithFactory (sqliteDatabase.CursorFactory cursorFactory,String sql,String editTable,CancellationSignal cancellationSignal) { return rawQueryWithFactory(cursorFactory,sql,editTable); } }
2.将@Config注释添加到测试中
要使用自定义阴影类,可以在robolectric2中使用@Config注释
@RunWith(RobolectricTestRunner.class) @Config( shadows = {CustomsqliteShadow.class}) public class ContentProviderTest {
参考
http://robolectric.blogspot.co.at/2013/05/configuring-robolectric-20.html
关于android – 具有不确定ProgressBar的UI的“java.lang.RuntimeException:无法启动intent”的介绍已经告一段落,感谢您的耐心阅读,如果想了解更多关于Android FATAL EXCEPTION MAIN:java.lang.RuntimeException:无法启动活动ComponentInfo、Android java.lang.RuntimeException:无法实例化活动ComponentInfo … java.lang.NullPointerException、Android Proguard ExceptionInInitializerError和RuntimeException、Android Robolectric – ContentProvider中queryBuilder.query()中的RuntimeException / InstantiationException的相关信息,请在本站寻找。
本文标签: