小编Poo*_*oks的帖子

Android:如何在AlertDialog中覆盖onBackPressed()?

我有一个AlertDialog dlgDetails从另一个显示AlertDialog dlgMenu.如果用户按下dlgDetails中的后退按钮,我希望能够再次显示dlgMenu,如果他按下对话框,则只需退出对话框.

我认为最好的方法是覆盖onBackPresseddlgDetails,但我不知道如何做到这一点,因为必须使用Builder间接创建AlertDialogs.

我试图创建一个派生的AlertDialog(public class AlertDialogDetails extends AlertDialog { ...}),但我想我还必须AlertDialog.Builder在该类中扩展以返回一个AlertDialogDetails,但是有没有更简单的方法?如果没有,你会如何重写生成器?

android overriding android-dialog

22
推荐指数
2
解决办法
2万
查看次数

如何在xml中求和值?

假设我在XML文件中定义了2个维度值,并希望定义第3个值,该值是其他2个值的总和.有没有办法在XML文件中执行此操作?

以下是我想要做的事情的说明.

<?xml version="1.0" encoding="utf-8"?>
<resources>
 <dimen name="top_element_size">10dp</dimen>
 <dimen name="element_spacing">5dp</dimen>
 <dimen name="bottom_element_top">@dimen/top_element_size + @dimen/element_spacing</dimen>
</resources>
Run Code Online (Sandbox Code Playgroud)

我想android:layout_marginTop="@dimen/bottom_element_top"frame布局中定义底部元素.但似乎这@dimen/top_element_size + @dimen/element_spacing不合法.

xml android-layout

16
推荐指数
1
解决办法
4873
查看次数

Android:如何在Dialog活动的标题栏中设置图标?

我在Manifest中声明了一个对话活动,如下所示:

<activity android:name=".myDialog"
              android:label="@string/title_dlg"
              android:icon="@android:drawable/ic_dialog_alert"
              android:exported="false"
              android:excludeFromRecents="true"
              android:theme="@android:style/Theme.Dialog">
Run Code Online (Sandbox Code Playgroud)

但是,标题栏中只显示标题的文本,并且图标似乎被忽略.有没有办法在标题栏中显示图标?

android android-manifest

12
推荐指数
1
解决办法
1万
查看次数

View.setFocusable()和View.setClickable()在自定义ArrayAdapter中具有相反的效果

这是一个跟进这个问题,其中Reimar Twelker使用建议View.setFocusable()View.setClickable()使用ArrayAdapter启用/列表视图禁用行.

我试过这样做,但是我得到了与我期望的相反的效果.如果我使用

View.setFocusable(true);
View.setClickable(true);
Run Code Online (Sandbox Code Playgroud)

该行被禁用(按下时没有效果).如果我使用相反的:

View.setFocusable(false);
View.setClickable(false);
Run Code Online (Sandbox Code Playgroud)

该行已启用(按下时会应用选择).

关于可能发生的事情的任何线索?

这是我的布局的内容:

<?xml version="1.0" encoding="utf-8"?>
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
  android:id="@+id/row_style"
  android:layout_width="fill_parent"
  android:layout_height="?android:attr/listPreferredItemHeight" 
  android:paddingLeft="5dip"
  android:paddingRight="5dip">

  <ImageView android:id="@+id/row_image_style"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:adjustViewBounds="false"
    android:scaleType="centerCrop"
    android:drawingCacheQuality="low" />
</FrameLayout>
Run Code Online (Sandbox Code Playgroud)

我在这样的警告对话框中使用它:

dialog = new AlertDialog.Builder(this)
            .setTitle(R.string.templates_dialog)
            .setAdapter(new StyleAdapter(this, R.id.row_style, StyleTemplate.values()), 
                new DialogInterface.OnClickListener() {
                    @Override
                    public void onClick(DialogInterface dialog, int which) {
                        setTemplate(StyleTemplate.values()[which]);
                    }
                })
            .create();
            dialog.setCanceledOnTouchOutside(true);
Run Code Online (Sandbox Code Playgroud)

StyleAdapter定义如下:

public class StyleAdapter extends ArrayAdapter<StyleTemplate>{

        private final StyleTemplate[] m_objects;
        private final LayoutInflater inflater; …
Run Code Online (Sandbox Code Playgroud)

android

9
推荐指数
1
解决办法
3238
查看次数

Android:与OpenGL渲染器线程同步

我正在使用OpenGL ES在Android应用程序中执行绘图.

我想编写一个从UI线程调用的函数,该函数将调用渲染器线程并让它读取并将图像返回给调用者.

我正在考虑使用Future,以便在呈现器线程写入图像数据时UI线程会休眠(该操作非常快,因此用户不会觉得应用程序没有响应).

但我对如何将Future提交给渲染器线程感到茫然.我发现的所有示例都创建了自己的线程,然后将未来提交给这些线程.有关GLSurfaceView的文档提到"queueEvent()方法用于在UI线程和呈现线程之间进行安全通信.如果您愿意,可以使用其他一些Java跨线程通信技术,例如Renderer类本身的synchronized方法".所以看起来使用Future而不是调用queueEvent()是可能的,但我不知道如何做到这一点.

multithreading android opengl-es

6
推荐指数
2
解决办法
8811
查看次数

如何在使用SurfaceView时获取MediaPlayer播放的视频的FPS?

我正在MediaPlayer用来播放可以进出的视频,并试图看看使用a SurfaceView和a TextureView对于播放器的输出之间的性能是否有任何差异.

对于TextureView,我曾经SurfaceTextureListener.onSurfaceTextureUpdated()知道何时显示一个帧,从而计算出FPS.

但是,在使用时,我无法找到类似的方法SurfaceView.我尝试创建自己的类扩展SurfaceView和重载onDraw(),但看起来onDraw()在播放电影时从未调用过.

知道是否以及如何实现这一目标?

android surfaceview android-mediaplayer

5
推荐指数
0
解决办法
1134
查看次数

退款后,无法在Google Play上重新购买应用内结算项目

我在我的应用中实施了应用内结算功能,现在正在测试其退款处理方式。

我用测试帐户购买了应用程序托管的应用程序内结算商品并退款。我的应用程序按预期方式广播了退款,并且恢复交易时看到该商品已退款,因此到那时为止一切都很好。

我的问题是我无法重新购买该商品以测试其他情况。当我尝试购买商品时,会出现Google Play界面,并显示一条错误消息:“您已经拥有此商品”。有两个按钮“确定”和“详细信息”。如果我按详细信息,则Google Play崩溃,然后返回到我的应用程序。

有没有类似的经历?如果用户以前曾退款,则禁止用户购买应用内商品吗?

android in-app-billing

4
推荐指数
3
解决办法
4080
查看次数