在最后几天,我确实看到增加的错误消息听起来相同.我不使用平板电脑ActionBar - 我只是为手机开发.
这些崩溃的原因是什么?
这是一个完整的痕迹:
java.lang.RuntimeException: Failure delivering result ResultInfo{who=null, request=8995, result=0, data=null} to activity {xy.yyyy.app.android/xy.yyyy.app.Main}: java.lang.IllegalStateException: ActionBarImpl can only be used with a compatible window decor layout
at android.app.ActivityThread.deliverResults(ActivityThread.java:2818)
at android.app.ActivityThread.handleSendResult(ActivityThread.java:2861)
at android.app.ActivityThread.access$1000(ActivityThread.java:122)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1054)
at android.os.Handler.dispatchMessage(Handler.java:99)
at android.os.Looper.loop(Looper.java:132)
at android.app.ActivityThread.main(ActivityThread.java:4123)
at java.lang.reflect.Method.invokeNative(Native Method)
at java.lang.reflect.Method.invoke(Method.java:491)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:841)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:599)
at dalvik.system.NativeStart.main(Native Method)
Caused by: java.lang.IllegalStateException: ActionBarImpl can only be used with a compatible window decor layout
at com.android.internal.app.ActionBarImpl.init(ActionBarImpl.java:214)
at com.android.internal.app.ActionBarImpl.<init>(ActionBarImpl.java:200)
at android.app.Dialog.show(Dialog.java:255)
at xy.yyyy.app.MyProgressDialog.show(MyProgressDialog.java:33)
at xy.yyyy.app.MyProgressDialog.show(MyProgressDialog.java:23)
at xy.yyyy.app.Main$FetchTask.onPreExecute(Main.java:19) …Run Code Online (Sandbox Code Playgroud) 在v3 android应用程序中,具有对话框主题的活动(例如:Theme.Holo.Dialog)是否可以拥有操作栏?我尝试调整windowIsFloating属性,但是这导致了一个异常的"actionbarimpl not compatible",表明当前的对话框主题不支持动作栏?
它应该是可能的,因为三星Galaxy Tab上的几个应用程序都有操作栏的对话框.
谢谢.
我正在构建选项卡的应用程序.
@android:style/Theme.Dialog 一切正常,直到我不应用主题@android:style/Theme.Dialog
后应用主题我得到例外:
java.lang.RuntimeException: Unable to start activity ComponentInfo{com.ebuilder/com.ebuilder.views.MyTabActivity}: java.lang.NullPointerException
Run Code Online (Sandbox Code Playgroud)
在以下行:
actionBar.addTab(actionBar.newTab().setCustomView(R.layout.tab_home).
setTabListener(homeListener), 0);
Run Code Online (Sandbox Code Playgroud)
我有两个问题:
1.如果我应用主题对话框会出现什么问题?
我的做法是对的吗?
如果有人知道另一种方法,请告诉我.
Edit1: *清单文件*
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.vivek"
android:versionCode="1"
android:versionName="1.0" >
<uses-sdk android:targetSdkVersion="14"/>
<application
android:icon="@drawable/ic_launcher"
android:label="@string/app_name" >
<activity
android:name=".FragmentInsideFragmentTestActivity"
android:label="@string/app_name"
android:theme="@style/Theme.CustomDialog" >
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
</application>
</manifest>
Run Code Online (Sandbox Code Playgroud)
RES /值/ style.xml
<?xml version="1.0" encoding="utf-8"?>
<resources>
<style name="Theme.CustomDialog" parent="android:style/Theme.Dialog">
<item name="android:windowNoTitle">false</item>
<item name="android:windowActionBar">true</item>
</style>
</resources>
Run Code Online (Sandbox Code Playgroud)
EDIT2
05-03 …Run Code Online (Sandbox Code Playgroud) 如何在平板电脑上呈现活动作为叠加窗口?这方面的一个例子是新的Google+应用,如下所示:

重要的是,我希望ActionBar成为窗口的一部分,并且下面的Activity将变暗,如屏幕截图所示.
谢谢
我正在开发我的第一个Android应用程序,并且正在尝试设计我的活动.最终,我希望我的活动与对话框看起来一样.我在我的所有活动中Theme.Dialog使用以下代码给出了样式AndroidManifest.xml:
<application
android:icon="@drawable/group"
android:label="@string/app_name"
android:theme="@android:style/Theme.Dialog">
</application>
Run Code Online (Sandbox Code Playgroud)
这为我的活动提供了"浮动"外观和对话框的边框,但不是样式标题.标题与一般对话框背景具有相同的颜色和外观,而不是"真实"对话框中的"标题"背景和边框.请注意,在两个示例中,标题下面都有一个漂亮的边框,而在第二个示例中,它有一个渐变背景.
有没有办法确保我的活动标题以某种方式继承系统对话框标题,以便有效地复制我的活动对话框的外观 - 除了边框和Theme.Dialog样式附带的"浮动" ?
请注意,我不想叫我的活动从另一个对话框,我只是希望它LOOK像dilaog,即使它在响应加载到一个意图按我的清单的意图过滤器.


ADD:有没有什么方法可以让我的活动,当它旋转进来时onCreate(),调用一些方法将自己变成一个实际的对话框?请记住,活动仍然需要能够响应系统中的意图.
我有一个DialogFragment风格全屏使用setStyle(STYLE_NORMAL, R.style.Theme_App).
该DialogFragment精细显示,但后续行动(在homeAsUp在动作条的动作)不起作用.我尝试onOptionsItemSelected在实施中,DialogFragment但它永远不会被调用.
有没有办法在DialogFragment中获取up动作回调,所以我可以解雇它?作为参考,我正在使用ActionBarCompat.
android android-dialogfragment dialogfragment android-actionbar-compat
通常,活动将显示最大屏幕.我希望显示一个宽度为400px,高度为500px的窗口,但是下面仍然显示一个完整的窗口,为什么?
主要活动
class MainActivity : AppCompatActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
}
}
Run Code Online (Sandbox Code Playgroud)
activity_main.xml中
<?xml version="1.0" encoding="utf-8"?>
<android.support.constraint.ConstraintLayout
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:layout_width="400px"
android:layout_height="500px"
tools:context=".MainActivity">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Hello World OK!"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintLeft_toLeftOf="parent"
app:layout_constraintRight_toRightOf="parent"
app:layout_constraintTop_toTopOf="parent"/>
</android.support.constraint.ConstraintLayout>
Run Code Online (Sandbox Code Playgroud)
到克柳月
谢谢!但是你的代码不起作用,运行代码后窗口全屏显示.
class MainActivity : AppCompatActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
val m = windowManager
val d = m.defaultDisplay
val p = window.attributes
p.height = dp2px(this, 500f)
p.width = dp2px(this, 400f)
window.attributes = p
}
private fun dp2px(context: Context, …Run Code Online (Sandbox Code Playgroud) 我正在使用Android支持包.
我创建了一个对话框:
Dialog dialog = new Dialog(activity, android.R.style.Theme_Translucent_NoTitleBar_Fullscreen);
Run Code Online (Sandbox Code Playgroud)
由于我希望对话框以全屏显示,所以我将主题Theme_Translucent_NoTitleBar_Fullscreen应用于它并且它起作用.
我有以下两个问题:
我希望我的对话框显示为全屏仍然但是不能覆盖顶部的ActionBar,那么我应该使用什么主题?
如何使用灰色叠加层来显示对话框所覆盖的视图(假设我的第一个qustion已经解决)?
android android-widget android-emulator android-intent android-layout
添加此行时,应用程序崩溃
`requestWindowFeature(Window.FEATURE_NO_TITLE);
可能解决方案很简单,但我真的不知道该修复它的人.
Java代码:
public class GLSurfaceCameraSurfaceDemo2Activity extends Activity {
/** Called when the activity is first created. */
GLSurfaceView glSurfaceView;
FrameLayout fl01;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
requestWindowFeature(Window.FEATURE_NO_TITLE);
}
Run Code Online (Sandbox Code Playgroud)
}
XML文件:
<FrameLayout
android:id="@+id/fl01"
android:orientation="horizontal"
android:layout_width="fill_parent"
android:layout_height="fill_parent"/>
Run Code Online (Sandbox Code Playgroud) 如何向 中添加操作栏DialogFragment?我找到了一种方法,可以按照我们需要的方式设置 Activity 的样式,然后将其显示为对话框,如以下链接中的ActionBar in a DialogFragment我需要在适当的DialogFragment. 是否可以?