我一直看到我的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) 这不是一个很大的问题,因为我的项目仍然构建并正确运行(使用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中运行我的项目时会出现同样的问题.
我刚刚下载了今天发布的新Android Studio IDE,并进行了安装.当我双击该图标以启动它时,没有任何反应.我已经尝试了它的每个快捷方式,以及安装文件夹中的.exe.
我还尝试重新启动计算机,卸载/重新启动,并安装到没有空格的文件夹位置.有人知道为什么Android Studio无法启动吗?
阅读本文后,我无法弄清楚为什么使用lambda表达式.公平地说,我认为我没有正确理解委托和表达式树类型是什么,但我不明白为什么有人会使用lambda表达式而不是声明的函数.有人可以开导我吗?
我有一个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,但没有文档(我可以找到)制作图标的大小.
看看示例android穿戴项目,我看到android穿行动项目的图标大小是64dp x 64dp(例如,回复).从谷歌源代码示例来看,我发现手机上的动作项目的图标大小与动作栏的图标大小相匹配,32dp x 32dp大小和24dp x 24dp光学方块,也在这里指定.
当我将图标保持在32x32时,它们在Android设备上看起来很糟糕,当我将它们保持为64x64时,它们对于手机上的动作项目栏来说太大了.
有没有一种方法(不同的res文件夹?使用WearableExtender?),可让手机使用比穿戴式动作的项目有不同的图标?
嘿所有,我正在尝试动画一个自定义对话框,以便当它弹出时它有一种反弹效果(它开始小,变大,然后反弹一点小然后回到正常大小).
我不知道如何开始这项任务.我应该怎样看待这个观点的动画,它是如何完成的?
使用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) 我们实现了一个HTTP身份验证连接,用C#编码Uri.EscapeDataString()
.
我正在尝试创建一个与C#版本完全相同的java测试应用程序,但URLEncoder.encode(string, "UTF-8")
添加了与C#Uri.EscapeDataString()
函数不完全相同的其他编码.
什么是等效的编码方法?
我有一个应用程序似乎可以下载到除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)
有没有人有任何想法为什么会这样?
几个月来,由于用户投诉我们的应用程序的主要部分无法与之交互,我们的应用程序一直受到不好的评价.我们的应用程序使用支持库并有一个操作栏.根据这些用户,操作栏是应用程序响应用户触摸的唯一部分.操作栏下方的所有内容(除了安卓主页,后退等按钮)都没有响应.
在我们最终尝试重现问题后遇到很多麻烦,我们终于发现安装应用程序Lux会导致此行为.安装Lux时,唯一能够响应用户触摸的是操作栏.
看看Lux的权限,我看到了这个:
其他应用程序UI
绘制其他应用程序
在查找之后,对应于此Android权限:
android.permission.SYSTEM_ALERT_WINDOW
Run Code Online (Sandbox Code Playgroud)
用户已经确认Lux应用程序是导致该问题的原因.
我的问题是,如何在不告诉用户卸载Lux的情况下解决这个问题?这是一个机器人的bug,还是我们的?我们可以做些什么让我们的应用程序反应迟钝,而不是其他人?
我想我的下一步是向Lux团队发送一封电子邮件,看看他们是否知道可能导致这种情况的原因(以及我们自己的调查).我的直觉也是给Android团队发电子邮件,因为在我看来,外部应用程序不应该如此戏剧性地影响另一个应用程序的行为.
我的C#代码中有一行创建字体以测量字符串的长度:
int width = (int)(myGraphics.MeasureString(text, new Font(myFontName, myFontSize, FontStyle.Bold)).Width);
Run Code Online (Sandbox Code Playgroud)
我的问题是,new Font()
变量何时处理?处理表格时是处理还是立即处理?
我的应用程序目前使用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)