小编Joh*_*hey的帖子

当ViewPager的父片段隐藏然后显示时,ViewPager的片段视图丢失

我一直看到我的ViewPager和我自己的FragmentStatePagerAdapter有一些奇怪的行为.

我的视图层次结构如下:

-> (1) Fragment root view (RelativeLayout)
 -> (2) ViewPager
  -> (3) ViewPager's current fragment view
Run Code Online (Sandbox Code Playgroud)

当负责片段根视图(1)的片段被隐藏(在片段事务中使用.hide())然后显示(使用.show())时,当前在ViewPager中显示的片段视图(3) )虽然片段仍然存在,但变为null.基本上,我的ViewPager变得完全空白/透明.

我找到解决这个问题的唯一方法是打电话

int current = myViewPager.getCurrentItem();
myViewPager.setAdapter(myAdapter);
myViewPager.setCurrentItem(current);
Run Code Online (Sandbox Code Playgroud)

显示父片段后.这会以某种方式触发视图重新创建并显示在屏幕上.不幸的是,这偶尔会导致异常处理寻呼机适配器unregisterDataSetObserver()在旧观察者上调用两次.

有一个更好的方法吗?我想我要问的是:

当隐藏ViewPager的父片段时,为什么我的ViewPager中的片段视图会被销毁?

更新:当应用程序"最小化"然后"恢复"(通过按下主页操作键然后返回)时,也会发生这种情况.

每个请求,这是我的寻呼机适配器类:

public class MyInfoSlidePagerAdapter extends FragmentStatePagerAdapter {

    private ArrayList<MyInfo> infos = new ArrayList<MyInfo>();

    public MyInfoSlidePagerAdapter (FragmentManager fm) {
        super(fm);
    }

    public MyInfoSlidePagerAdapter (FragmentManager fm, MyInfo[] newInfos) {
        super(fm);
        setInfos(newInfos);
    }

    @Override
    public int getItemPosition(Object object) {
        int position = infos.indexOf(((MyInfoDetailsFragment)object).getMyInfo());
        return position > 0 ? position : …
Run Code Online (Sandbox Code Playgroud)

android android-fragments android-viewpager

65
推荐指数
4
解决办法
4万
查看次数

使用v7兼容性支持主题时,IDE"无法解析@ style/Theme.Appcompat"

这不是一个很大的问题,因为我的项目仍然构建并正确运行(使用gradle),但我无法让Android Studio识别API 18 SDK中发布的应用程序兼容性主题(允许Android 2.1的操作栏支持)以上).

我成功加载了支持库,因为java文件中的ActionBar类可以完成代码.问题是Android Studio在AndroidManifest.xml中显示了对Theme.AppCompat.Light赋值的红色文本错误.

有没有办法在Android Studio中的外部库中为清单中声明的​​主题资源启用代码完成?

更新这是<activity>我的AndroidManifest块:

<activity
    android:name="com.example.activities.MainActivity"
    android:label="@string/app_name"
    android:screenOrientation="portrait"
    android:theme="@style/Theme.AppCompat.Light" >
Run Code Online (Sandbox Code Playgroud)

我也尝试在应用程序块中设置主题:

<application
    android:allowBackup="true"
    android:icon="@drawable/main_final_ic"
    android:label="@string/app_name"
    android:logo="@drawable/main_final_enzo"
    android:theme="@style/Theme.AppCompat.Light" >
Run Code Online (Sandbox Code Playgroud)

同样,这些工作和编译都正常,但在我的IDE中显示为带有错误的红色文本.我还刚刚确认在eclipse中运行我的项目时会出现同样的问题.

eclipse android android-support-library android-studio

41
推荐指数
3
解决办法
5万
查看次数

Android Studio在安装后无法启动

我刚刚下载了今天发布的新Android Studio IDE,并进行了安装.当我双击该图标以启动它时,没有任何反应.我已经尝试了它的每个快捷方式,以及安装文件夹中的.exe.

我还尝试重新启动计算机,卸载/重新启动,并安装到没有空格的文件夹位置.有人知道为什么Android Studio无法启动吗?

android intellij-idea android-studio

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

lambda表达式的重点是什么?

阅读本文后,我无法弄清楚为什么使用lambda表达式.公平地说,我认为我没有正确理解委托和表达式树类型是什么,但我不明白为什么有人会使用lambda表达式而不是声明的函数.有人可以开导我吗?

c# lambda delegates

17
推荐指数
2
解决办法
7090
查看次数

如何过滤AutoCompleteTextView的结果?

我有一个AutoCompleteTextView设置使用一个光标覆盖我的联系人.问题是,我正确地填充了下拉列表,但是在我输入后它没有过滤结果.

这是我的光标和适配器设置的代码:

edt_Contact = (AutoCompleteTextView)findViewById(R.id.compose_edtContact);

cursor = getContentResolver().query(ContactsContract.CommonDataKinds.Phone.CONTENT_URI, 
        new String[] {Phone._ID, Phone.DISPLAY_NAME, Phone.NUMBER}, 
        null,null,null);
startManagingCursor(cursor);
String[] from = new String[] { Phone.DISPLAY_NAME, Phone.NUMBER};
int[] to = new int[] { R.id.contact_name, R.id.contact_phoneNo};
adapter = new SimpleCursorAdapter(this, R.layout.simple_contact_textview, cursor, from, to);

edt_Contact.setAdapter(adapter);
Run Code Online (Sandbox Code Playgroud)

这是simple_contact_textview的xml:

<LinearLayout
  xmlns:android="http://schemas.android.com/apk/res/android"
  android:layout_width="fill_parent"
  android:layout_height="fill_parent" android:padding="5sp" android:paddingBottom="5sp" android:background="#FFFFFFFF">
    <TextView 
        android:layout_width="wrap_content" 
        android:layout_height="wrap_content" 
        android:id="@+id/contact_name" 
        android:textColor="#FF000000" 
        android:textSize="20sp" 
        android:text="Name">
    </TextView>
    <TextView 
        android:layout_width="wrap_content" 
        android:layout_height="wrap_content" 
        android:id="@+id/contact_phoneNo" 
        android:paddingLeft="10sp" 
        android:textColor="#FF000000" 
        android:textSize="20sp" 
        android:text="Number" 
        android:ellipsize="end">
    </TextView>
</LinearLayout>
Run Code Online (Sandbox Code Playgroud)

如何根据用户输入的内容过滤下拉结果?例如,如果用户开始输入"和",我将如何出现"andrew","andy"和"mandy"?

android autocompletetextview

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

Android穿行动项目图标大小与电话通知行动项目大小调整

我对应用程序的通知操作项的图标大小有点困惑.我想让动作项兼容Android,但没有文档(我可以找到)制作图标的大小.

看看示例android穿戴项目,我看到android穿行动项目的图标大小是64dp x 64dp(例如,回复).从谷歌源代码示例来看,我发现手机上的动作项目的图标大小与动作栏的图标大小相匹配,32dp x 32dp大小和24dp x 24dp光学方块,也在这里指定.

当我将图标保持在32x32时,它们在Android设备上看起来很糟糕,当我将它们保持为64x64时,它们对于手机上的动作项目栏来说太大了.

有没有一种方法(不同的res文件夹?使用WearableExtender?),可让手机使用比穿戴式动作的项目有不同的图标?

android wear-os

7
推荐指数
1
解决办法
1919
查看次数

Android - 具有跳出效果的Animate弹出对话框

嘿所有,我正在尝试动画一个自定义对话框,以便当它弹出时它有一种反弹效果(它开始小,变大,然后反弹一点小然后回到正常大小).

我不知道如何开始这项任务.我应该怎样看待这个观点的动画,它是如何完成的?

animation android view

6
推荐指数
1
解决办法
6730
查看次数

ListView项和状态选择器背景drawable的奇怪行为

使用StateListDrawable作为背景时,我有一些非常奇怪的ListView行为.我试图按照这篇文章的答案,因为我没有让state_checked状态工作,但现在我的ListView变得疯狂.

当我单击某个项目时,它不会立即将颜色更改为选择器中的state_checked项目.稍微点击一下后,许多视图将突然切换到state_checked背景.它似乎是随机的.

这是我的状态选择器xml代码:

<?xml version="1.0" encoding="utf-8"?>
<selector
    xmlns:android="http://schemas.android.com/apk/res/android">

    <item android:state_pressed="true" >
        <shape>
            <gradient
                android:startColor="@color/grey"
                android:endColor="@color/darkgrey"
                android:angle="270" />
            <stroke
                android:width="0dp"
                android:color="@color/grey05" />
            <corners
                android:radius="0dp" />
            <padding
                android:left="10sp"
                android:top="10sp"
                android:right="10sp"
                android:bottom="10sp" />
        </shape>
    </item>

    <item android:state_focused="true" >
        <shape>
            <gradient
                android:endColor="@color/orange4"
                android:startColor="@color/orange5"
                android:angle="270" />
            <stroke
                android:width="0dp"
                android:color="@color/grey05" />
            <corners
                android:radius="0dp" />
            <padding
                android:left="10sp"
                android:top="10sp"
                android:right="10sp"
                android:bottom="10sp" />
        </shape>
    </item>

    <item android:state_checked="true">
        <shape>
            <gradient
                android:endColor="@color/brown2"
                android:startColor="@color/brown1"
                android:angle="270" />
            <stroke
                android:width="0dp"
                android:color="@color/grey05" />
            <corners
                android:radius="0dp" />
            <padding
                android:left="10sp"
                android:top="10sp"
                android:right="10sp"
                android:bottom="10sp" />
        </shape> …
Run Code Online (Sandbox Code Playgroud)

android listview drawable

6
推荐指数
1
解决办法
3923
查看次数

C#Uri.EscapeDatastring()等效于Java

我们实现了一个HTTP身份验证连接,用C#编码Uri.EscapeDataString().

我正在尝试创建一个与C#版本完全相同的java测试应用程序,但URLEncoder.encode(string, "UTF-8")添加了与C#Uri.EscapeDataString()函数不完全相同的其他编码.

什么是等效的编码方法?

c# java urlencode

6
推荐指数
1
解决办法
3240
查看次数

应用程序不会在HTC Sensation上市

我有一个应用程序似乎可以下载到除HTC Sensation之外的所有手机.我和Sensation的朋友还有另外两部他能安装的手机(SDK类型较低).我无法弄清楚为什么会这样.我正试图用另一个2.3或更高的手机来看看它是否与姜饼有关.以下是我的AndroidManifest的相关部分(仅排除活动):

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
      package="x.x.x.x"
      android:versionCode="8" android:versionName="1.3.3">
    <uses-sdk android:minSdkVersion="7" />

    <application android:icon="@drawable/icon" android:label="@string/app_name" android:theme="@android:style/Theme.NoTitleBar">
        <activity items.... />
    </application>
    <uses-feature android:name="android.hardware.telephony" />
    <uses-permission android:name="android.permission.READ_CONTACTS"/>
    <uses-permission android:name="android.permission.INTERNET"/>
    <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>
    <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
    <uses-permission android:name="android.permission.SEND_SMS"/>
</manifest>
Run Code Online (Sandbox Code Playgroud)

有没有人有任何想法为什么会这样?

android google-play

5
推荐指数
1
解决办法
764
查看次数

Lux的SYSTEM_ALERT_WINDOW权限使我们的部分应用程序无法运行

几个月来,由于用户投诉我们的应用程序的主要部分无法与之交互,我们的应用程序一直受到不好的评价.我们的应用程序使用支持库并有一个操作栏.根据这些用户,操作栏是应用程序响应用户触摸的唯一部分.操作栏下方的所有内容(除了安卓主页,后退等按钮)都没有响应.

在我们最终尝试重现问题后遇到很多麻烦,我们终于发现安装应用程序Lux会导致此行为.安装Lux时,唯一能够响应用户触摸的是操作栏.

看看Lux的权限,我看到了这个:

其他应用程序UI
绘制其他应用程序

在查找之后,对应于此Android权限:

android.permission.SYSTEM_ALERT_WINDOW
Run Code Online (Sandbox Code Playgroud)

用户已经确认Lux应用程序是导致该问题的原因.

我的问题是,如何在不告诉用户卸载Lux的情况下解决这个问题?这是一个机器人的bug,还是我们的?我们可以做些什么让我们的应用程序反应迟钝,而不是其他人?

我想我的下一步是向Lux团队发送一封电子邮件,看看他们是否知道可能导致这种情况的原因(以及我们自己的调查).我的直觉也是给Android团队发电子邮件,因为在我看来,外部应用程序不应该如此戏剧性地影响另一个应用程序的行为.

android android-support-library

5
推荐指数
1
解决办法
653
查看次数

这个Font对象什么时候被处理?

我的C#代码中有一行创建字体以测量字符串的长度:

int width = (int)(myGraphics.MeasureString(text, new Font(myFontName, myFontSize, FontStyle.Bold)).Width);
Run Code Online (Sandbox Code Playgroud)

我的问题是,new Font()变量何时处理?处理表格时是处理还是立即处理?

.net c# garbage-collection

4
推荐指数
1
解决办法
420
查看次数

用户输入的撇号崩溃Android应用程序(与SQL相关)

我的应用程序目前使用SQLite数据库为用户存储消息.但是,如果用户在任何字段中输入撇号,则数据库崩溃.我意识到这个问题是由于SQLite使用撇号作为引用分隔符(我在存储的消息文本周围放置了单个撇号),但是想不出有什么好方法可以解决这个问题.在SQLite数据库中存储带撇号的字符串是否常见?

以下是我收到的错误示例:

java.lang.RuntimeException: Unable to resume activity {x.x.x.x/x.x.x.x.Main}: android.database.sqlite.SQLiteException: near "m": syntax error: , while compiling: SELECT title, contact_name, contact_number FROM contacts WHERE title='I'm at work'
at android.app.ActivityThread.performResumeActivity(ActivityThread.java:3128)
at android.app.ActivityThread.handleResumeActivity(ActivityThread.java:3143)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2684)
at android.app.ActivityThread.access$2300(ActivityThread.java:125)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:2033)
at android.os.Handler.dispatchMessage(Handler.java:99)
at android.os.Looper.loop(Looper.java:123)
at android.app.ActivityThread.main(ActivityThread.java:4627)
at java.lang.reflect.Method.invokeNative(Native Method)
at java.lang.reflect.Method.invoke(Method.java:521)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:859)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:617)
at dalvik.system.NativeStart.main(Native Method)
Caused by: android.database.sqlite.SQLiteException: near "m": syntax error: , while compiling: SELECT title, contact_name, contact_number FROM contacts WHERE title='I'm at work'
at android.database.sqlite.SQLiteCompiledSql.native_compile(Native Method)
at android.database.sqlite.SQLiteCompiledSql.compile(SQLiteCompiledSql.java:91)
at …
Run Code Online (Sandbox Code Playgroud)

sql sqlite android

2
推荐指数
1
解决办法
5400
查看次数