相关疑难解决方法(0)

测试ActionBarActivity时,"你需要使用Theme.Appcompat主题...",但我是

测试一个在Eclipse中通过Android JUnit测试从android-support-v7-appcompat使用ActionBarActivity的应用程序时遇到问题.在模拟器或设备中运行时,一切似乎都能正常工作.

我尝试使用ActivityUnitTestCase中的模拟应用程序和使用ActionBarActivity的startActivity,并按照ActionBarCompat中的建议更改了值-v11等中的父主题:java.lang.IllegalStateException:您需要使用Theme.AppCompat但它仍然无效.

你需要使用一个Theme.AppCompat主题(或后代),这个活动也没有给出答案,也就是那个问题的人既没有在他的清单中指定的Theme.AppCompat(我这样做),也不是他真的想要扩展ActionBarActivity(我这样做).他的解决方案是简单地扩展Activity.

我究竟做错了什么?

这是我得到的错误(来自Junit-Window的Failure-Trace):

java.lang.IllegalStateException: You need to use a Theme.AppCompat theme (or descendant) with this activity.
at android.support.v7.app.ActionBarActivityDelegate.onCreate(ActionBarActivityDelegate.java:108)
at android.support.v7.app.ActionBarActivityDelegateICS.onCreate(ActionBarActivityDelegateICS.java:57)
at android.support.v7.app.ActionBarActivity.onCreate(ActionBarActivity.java:98)
at android.hello.HelloWorldActivity.onCreate(HelloWorldActivity.java:14)
at android.app.Activity.performCreate(Activity.java:5104)
at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1080)
at android.test.ActivityUnitTestCase.startActivity(ActivityUnitTestCase.java:158)
at android.hello.test.HelloWorldActivityTest.setUp(HelloWorldActivityTest.java:26)
at android.test.AndroidTestRunner.runTest(AndroidTestRunner.java:190)
at android.test.AndroidTestRunner.runTest(AndroidTestRunner.java:175)
at android.test.InstrumentationTestRunner.onStart(InstrumentationTestRunner.java:555)
at android.app.Instrumentation$InstrumentationThread.run(Instrumentation.java:1661)
Run Code Online (Sandbox Code Playgroud)

HelloWorldActivity.java

package android.hello;

import android.support.v7.app.ActionBar;
import android.support.v7.app.ActionBarActivity;
import android.app.Activity;
import android.os.Bundle;
import android.widget.TextView;

public class HelloWorldActivity extends ActionBarActivity {
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
        TextView tv = …
Run Code Online (Sandbox Code Playgroud)

java android unit-testing android-actionbar android-actionbar-compat

36
推荐指数
1
解决办法
6685
查看次数

由于'java.lang.NullPointerException'导致Instrumentation运行失败

我试图通过扩展测试类来为我的应用程序中的活动编写单元测试用例ActivityUnitTestCase.我可以提前成功运行测试用例,但现在我总是在运行时遇到异常.虽然我对处理非常熟悉,但我NullPointerExceptions无法弄清楚造成这种情况的问题.我找不到任何类似的问题,所以我发布了这个问题.

堆栈跟踪显示我的代码中此行有一个空对象引用

activity = startActivity(mIntent, null, null);
Run Code Online (Sandbox Code Playgroud)

但该startActivity方法应该得到我正在测试的活动的实例.我不确定为什么它会返回null.

这是堆栈跟踪.

java.lang.NullPointerException: Attempt to write to field 'android.os.IBinder android.app.ActivityThread.mLastIntendedActivityToken' on a null object reference
at android.app.Activity.performCreate(Activity.java:6372)
at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1119)
at android.support.test.runner.MonitoringInstrumentation.callActivityOnCreate(MonitoringInstrumentation.java:346)
at android.test.ActivityUnitTestCase.startActivity(ActivityUnitTestCase.java:158)
at com.abc.test.MainActivityTest.access$100(MainActivityTest.java:16)
at com.abc.test.MainActivityTest$1.run(MainActivityTest.java:34)
at android.app.Instrumentation$SyncRunnable.run(Instrumentation.java:1891)
at android.os.Handler.handleCallback(Handler.java:739)
at android.os.Handler.dispatchMessage(Handler.java:95)
at android.os.Looper.loop(Looper.java:145)
at android.app.ActivityThread.main(ActivityThread.java:6117)
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:1399)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1194)

Test running failed: Instrumentation run failed due to 'java.lang.NullPointerException'
Run Code Online (Sandbox Code Playgroud)

这是Test类

public class MainActivityTest extends ActivityUnitTestCase<MainActivity>{

    private Intent mIntent;
    private MainActivity activity; …
Run Code Online (Sandbox Code Playgroud)

android nullpointerexception activityunittestcase android-instrumentation

11
推荐指数
1
解决办法
3212
查看次数