在我的应用程序中,我添加了为日常添加和保存图片的可能性,以a表示Fragment
.
为了将图片保存在SD卡上,我目前使用的功能是File.createTempFile
:
File imageFile = File.createTempFile(imageFileName, MyApplication.JPEG_FILE_SUFFIX, MyApplication.getAlbumDir());
Run Code Online (Sandbox Code Playgroud)
我实际上也尝试过标准方式:
File imageFile = new File(MyApplication.getAlbumDir(), imageFileName + MyApplication.JPEG_FILE_SUFFIX);
Run Code Online (Sandbox Code Playgroud)
两者都有效,但在我的情况下,第一个比第二个更好,因为该函数createTempFile
在文件名的末尾添加一个长的随机数,使其唯一.
举个例子,这是我用两种方法得到的:
使用createTempFile:IMG_2013-06-18_-1961144729.jpg
使用新文件:IMG_2013-06-18_.jpg
最后我的问题是,保持使用createTempFile
以保存我的照片是否安全,或者我是否必须使用标准方式并添加一些代码来生成唯一的文件名?它应该只用于临时文件吗?
我查看了有关该功能的文档,但我没有找到任何关于使用它而不是使用它的可能后果new File
.
谢谢
我目前正在开发我的应用程序,将其设计基于Holo主题.在全球范围内我想要做的是工作,但我对工作文件夹的方式有点困惑values
,values-v11
并且values-v14
.
所以我知道:
values
目标API低于11values-v11
目标是11到13之间的APIvalues-v14
目标API优于13起初我以为我必须为每个文件夹指定应用程序所需的所有样式,但后来我意识到了一种继承系统.
我的问题是我真的很困惑,并且不清楚如何在这3个文件夹之间进行这种继承.
我做了以下测试,以便查看手机上的行为(在Android 4.0上运行,因此该文件夹values-v14
应该是加载的文件夹):
在values
我有一个样式设置为蓝色文本颜色:
<style name="TextMedium" parent="@android:style/TextAppearance.Medium">
<item name="android:textColor">@color/Blue</item>
Run Code Online (Sandbox Code Playgroud)
在values-v11
我有一个样式设置为白色文本颜色:
<style name="TextMedium" parent="@android:style/TextAppearance.Medium">
<item name="android:textColor">@color/White</item>
Run Code Online (Sandbox Code Playgroud)
在values-v14
我有一个样式设置为红色文本颜色:
<style name="TextMedium" parent="@android:style/TextAppearance.Medium">
<item name="android:textColor">@color/Red</item>
Run Code Online (Sandbox Code Playgroud)
对于上面的第一种情况(每个文件夹具有不同的颜色),我的文本上加载的颜色为红色,表示values-v14
文件夹获得优先级.
然后,如果我从values-v14
文件夹中注释掉红色样式,则文本变为白色.这是否意味着values-v11
即使设备定位到values-v14
文件夹,系统也会采用文件夹中的样式?我认为它可能values
默认使用该文件夹但不是values-v11
.
更一般地说,我的问题是,这三个文件夹是作为父母和孩子工作吗?意思是:
values-v14
然后values-v11
,最后values
.values-v11
然后values
.values
.如果它确实是它的工作方式,那么在父文件夹中设置最大样式values
并在v11或v14中只添加特定的样式是否有意义?
很抱歉这个很长的问题,我希望很清楚,这个主题/样式系统只在Android指南中简要描述,很难找到有关它如何工作的信息......
谢谢你的帮助!
我的操作栏上有问题,我尝试在其上设置搜索视图,以便使搜索栏可扩展.
这很好,除了我必须使用选项设置所有其他菜单项,ifRoom
以便在单击搜索图标时让搜索字段占据所有空间.
这部分也运行良好,除了太多的菜单项被推入菜单溢出,垂直屏幕上只剩下2个图标(包括搜索栏).
我对另一个有5个菜单项的活动做了另一个测试:
android:showAsAction="always"
结果如下:
情况1:
案例2:
为什么我使用ifRoom
,只显示2个图标,而实际上5个可以轻松填满这个地方?
因此,我的搜索视图项旁边只有一个菜单项...
谢谢!
在Android Studio中,我有时会使用这种注释来禁用我已经处理的特定代码行上的检查警告,例如:
if(Build.VERSION.SDK_INT < Build.VERSION_CODES.JELLY_BEAN) {
//noinspection deprecation
textView.setBackgroundDrawable(ContextCompat.getDrawable(mContext, R.drawable.calendar_item_separator));
} else {
textView.setBackground(ContextCompat.getDrawable(mContext, R.drawable.calendar_item_separator));
}
Run Code Online (Sandbox Code Playgroud)
在这个例子中,我使用了关键字"deprecation",但我找不到可用关键字的完整列表.
有人发现了吗?
谢谢!
我发布这个问题,希望有人可能找到这个bug的解决方法.
使用来自Admob的新Native Express广告正在发生这种情况,但是下面的崩溃频繁发生(可能是1%的用户):
Invalid NativeAdManager type. Found: qa; Required: NativeAdManager.
Run Code Online (Sandbox Code Playgroud)
此Google论坛中已提出此错误:https://groups.google.com/forum/#!topic / google- admob -ads-sdk/xcRD_bEL9YA
Admob团队已经知道这个错误超过3周,但没有更正......
更新:几天后,也出现了类似的错误:
Invalid NativeAdManager type. Found: com.google.android.gms.ads.internal.o; Required: NativeAdManager.
Run Code Online (Sandbox Code Playgroud) 在我的应用程序中,我使用了几个首选项,包括一些使用以下属性与依赖项相关的首选项:android:dependency="pref_key"
.
基本上,如果未选中该复选框,则会禁用以下所有其他首选项:
当我在自定义主题中设置以下3行时,会出现问题:
<style name="AppThemeOrange" parent="@style/AppTheme">
<item name="android:textColorPrimary">@color/OrangeMain</item>
<item name="android:textColorSecondary">@color/OrangeDark</item>
<item name="android:textColorTertiary">@color/OrangeLight</item>
(...)
Run Code Online (Sandbox Code Playgroud)
在这3个属性上定义的颜色也会覆盖禁用的首选项的默认字体颜色:
首选项仍然被禁用,但显示的字体相反相反...
我搜索了默认的Holo Light样式和主题,但我不知道这个定义的位置以及为什么上面的样式会覆盖这些样式.
有没有人遇到过这个问题?
我在Fragment
生命周期中发现了一个非常奇怪的行为.
经过几次测试Fragment
,我意识到每次都得到这个执行顺序:
我真的很惊讶因为我确信onStart
只会在执行后才会被调用onCreateOptionsMenu
.
仅供参考,我试图将其设置MenuItem
为全局类变量onCreateOptionsMenu
以便能够使用它onStart
.当然,由于上面解释的执行顺序,我得到了一个空指针.
看来我越挖成片段的生命周期,更多的我失去了和文档仅详细说明的主要方法,从来没有的,如onCreateOptionsMenu
,onPrepareOptionsMenu
,onCreateContextMenu
等.
有人有关于此的任何其他信息,文档并没有真正帮助...
谢谢
我正在为在线视频创建一个媒体播放器,但是当我尝试运行它时,我收到了这个错误:"表面已被释放".这是我的代码:
public class VideoSample1 extends Activity implements Callback,
OnPreparedListener, OnCompletionListener,
OnClickListener, OnSeekCompleteListener, android.view.SurfaceHolder.Callback
{
public String video_path = "My video URL";
private SurfaceView surfaceViewFrame;
private MediaPlayer player;
private SurfaceHolder holder;
private Bundle extras;
private static final String TAG = "log_tag";
private boolean b =false;
@Override
protected void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.customvideoview);
extras = getIntent().getExtras();
surfaceViewFrame = (SurfaceView) findViewById(R.id.surfaceViewFrame);
surfaceViewFrame.setOnClickListener(this);
surfaceViewFrame.setClickable(false);
holder = surfaceViewFrame.getHolder();
holder.addCallback(this);
holder.setType(SurfaceHolder.SURFACE_TYPE_PUSH_BUFFERS);
player = new MediaPlayer();
player.setOnPreparedListener(this);
player.setOnCompletionListener(this);
player.setOnSeekCompleteListener(this);
player.setScreenOnWhilePlaying(true);
player.setDisplay(holder);
}
@Override
protected void onDestroy() …
Run Code Online (Sandbox Code Playgroud) 我最近使用Admob添加了一个插页式广告,其中包含Google Play服务库(这仍然是一个非常错误的BTW).
插页式广告运作良好,但以下电话:
// Begin loading interstitial
interstitial.loadAd(adInterstitialRequest);
Run Code Online (Sandbox Code Playgroud)
非常慢,它可以在我的应用程序首次启动时延迟最多2秒.
我该怎么做才能避免这种情况?我严格遵循谷歌提供的例子在这里.
仅供参考我尝试使用a在后台加载广告,AsyncTask
但似乎无法做到:
03-23 15:50:21.939: E/AndroidRuntime(3572): Caused by: java.lang.IllegalStateException: loadAd must be called on the main UI thread.
Run Code Online (Sandbox Code Playgroud)
谢谢
我在ACRA报告中多次报告了以下异常.它似乎只来自运行Android 4.4.2的设备,但我不知道问题出在哪里.
有没有人遇到过这个问题?
谢谢
java.lang.NullPointerException
at android.view.textservice.SpellCheckerSession.handleOnGetSentenceSuggestionsMultiple(SpellCheckerSession.java:222)
at android.view.textservice.SpellCheckerSession.access$100(SpellCheckerSession.java:86)
at android.view.textservice.SpellCheckerSession$1.handleMessage(SpellCheckerSession.java:116)
at android.os.Handler.dispatchMessage(Handler.java:102)
at android.os.Looper.loop(Looper.java:149)
at android.app.ActivityThread.main(ActivityThread.java:5061)
at java.lang.reflect.Method.invokeNative(Native Method)
at java.lang.reflect.Method.invoke(Method.java:515)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:787)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:603)
at dalvik.system.NativeStart.main(Native Method)
Run Code Online (Sandbox Code Playgroud)
UPDATE
正在运行此主题:https://code.google.com/p/android/issues/detail?id = 161400
线程上的开发人员只在运行Android 4.4.2的设备上遇到完全相同的问题.它似乎在其他版本上得到修复.