我在Eclipse中通过Android JUnit测试测试一个使用android-support-v7-appcompat中的ActionBarActivity的应用程序时遇到了一个问题。当在模拟器或设备中运行时,一切似乎都很好。
我做错了什么?
这是我得到的错误(从Junit-Window获得的失败跟踪):
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)
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 = (TextView) findViewById(android.hello.R.id.tv);
tv.setText("Hello, Android");
}
}
package android.hello;
import android.app.Application;
import android.util.Log;
public class HelloWorldApplication extends Application {
@Override
public void onCreate() {
super.onCreate();
setTheme(R.style.Theme_AppCompat);
}
}
...
<activity
android:name=".HelloWorldActivity"
android:label="@string/app_name"
android:theme="@style/Theme.AppCompat">
...
</activity>
....
package android.hello.test;
import android.hello.HelloWorldActivity;
import android.content.Intent;
import android.test.ActivityUnitTestCase;
import android.widget.TextView;
public class HelloWorldActivityTest extends ActivityUnitTestCase<HelloWorldActivity> {
HelloWorldActivity helloWorldActivity;
TextView textView;
public HelloWorldActivityTest() {
super(HelloWorldActivity.class);
}
@Override
protected void setUp() throws Exception {
super.setUp();
// Starts the MainActivity of ScanMe
startActivity(new Intent(getInstrumentation().getTargetContext(), HelloWorldActivity.class), null, null);
// Reference to the MainActivity of ScanMe
helloWorldActivity = (HelloWorldActivity)getActivity();
// Reference to the code input-TextEdit of the MainActivity of ScanMe
textView = (TextView) helloWorldActivity.findViewById(android.hello.R.id.tv);
}
@Override
protected void tearDown() throws Exception {
super.tearDown();
}
public void testPreconditions() throws Exception {
assertNotNull(textView);
}
public void testInputCodeField(){
String actual=textView.getText().toString();
String expected = "Hello, Android";
assertEquals(expected,actual );
}
}
我会尝试两件事:
但当我运行:Caused by:java.lang.IllegalStateException时:您需要将一个theme.AppCompat主题(或后代)与此活动一起使用。 我不明白,谢谢^^
我在启动应用程序时遇到以下错误: 我认为这与有关,但想不通。
我正在尝试使用这个图书馆https://github.com/jaiselrahman/FilePicker.当我使用以下代码启动活动时,我得到一个异常。 解决此错误的方法是使用以下主题。AppCompat,我已经有了,但仍然得到相同的错误。
我的应用程序在Android N上运行良好,但在Android M上时崩溃: 奇怪的是,我甚至没有编辑任何与我的应用程序的主题有关的东西,所以这个错误非常奇怪: 致命异常:main Process:com.curlybraceApps.ruchir.Rescuer,PID:20394 java.lang.runtimeException:无法启动活动ComponentInfo{com.curlyb
Android主题有什么不同。AppCompat和Base。主题AppCompat?我们什么时候应该使用基本主题?
我在我的应用程序中使用appcompat V22.1.0,并使用工具栏。当我使用时,一切都很好。当我开始实现时,它会产生如下错误: 有人知道怎么修吗?? MainActivity.java