小编an0*_*00b的帖子

为什么StringBuilder有String?

我刚刚StringBuilder第一次遇到并且感到惊讶,因为Java已经有一个非常强大的String类允许追加.

为什么选择String二等?

我在哪里可以了解更多信息StringBuilder

java string stringbuilder

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

找不到Library.apk!

我设法很好地重构了我的应用程序,因此,除了派生的Activity类中的一些方法之外,所有内容都在库项目中.

它工作得很漂亮,除了Eclipse的控制台(不是 LogCat!)发出以下错误消息:

[2011-06-13 19:54:08 - MyLibrary] Could not find MyLibrary.apk!
Run Code Online (Sandbox Code Playgroud)

我清理了两个项目(库应用程序),重新启动了Eclipse,重新构建了项目,但是这个奇怪的错误消息仍然存在.

这个错误信息是什么意思?(特别是在一切似乎都运行良好的情况下)

我怎么摆脱它?

更新:我尝试删除项目,然后根据下面的建议重新导入它.它没有帮助.然后我发现这个线程帮助我意识到我<uses-library>在应用程序的AndroidManifest.xml中引用了MyLibrary.我删除了它,清理了项目并重建了.问题依然存在.

我现在怀疑这是"真正的问题",例如我对某些路径或其他东西的配置错误.会是什么呢?

android apk android-library library-project

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

为什么adb install <same-packagename-always-release>失败?

我知道adb install如果它是一个不同的构建类型(即调试与发布),它将不会替换现有的包.

每当我运行调试会话时,Eclipse也会成功替换调试apks.

但是,当我尝试用另一个版本apk(相同的包名!)adb install替换现有版本 apk时,我收到一条失败消息:

adb install myapp-release.apk 
    pkg: /data/local/tmp/myapp-release.apk
Failure [INSTALL_FAILED_ALREADY_EXISTS]
745 KB/s (34310 bytes in 0.044s)
Run Code Online (Sandbox Code Playgroud)

这不应该工作吗?我错过了什么?

android adb apk

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

在onClick中获取上下文(DialogInterface v,int buttonId)?

获取内容的上下文onClick(View view),按钮的回调onClickListener()很容易:

view.getContext()
Run Code Online (Sandbox Code Playgroud)

但我无法弄清楚如何获得上下文中onClick(DialogInterface v, int buttonId),对于回调对话框onClickListener

public class MainActivity extends Activity implements android.content.DialogInterface.OnClickListener
Run Code Online (Sandbox Code Playgroud)

这可能吗?

android dialog onclick android-context

60
推荐指数
3
解决办法
8万
查看次数

如何引用库项目中的资产

在属于Library项目的类中,我调用:

webview.loadUrl("file:///android_asset/info.html", null);
Run Code Online (Sandbox Code Playgroud)

不幸的是,这只有在我将文件info.html 复制Application的项目资产文件夹中时才有效.

有没有办法告诉Android库代码:"在库的资源文件夹中查找此文件,而不是在应用程序的资源文件夹中"?

android android-assets android-library library-project

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

"不推荐使用此方法"对应用程序开发人员意味着什么

我看到了很多好的旧有用的方法,甚至整个类都被"弃用和过时".

但是用于调用这些方法的代码仍然有效.那么,作为Android应用程序开发人员,这对我意味着什么呢?

  1. 只要我愿意,继续使用此方法,因为较新的SDK将始终保持向后兼容.
  2. 只要我为旧目标构建(例如API 8),它就会工作,但如果我从API 14构建,编译器将拒绝完成构建.
  3. (1)和(2)
  4. 其他?

当没有提供替代方案时,这尤其令人困惑,例如WebView.PictureListener.html#onNewPicture.

android

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

为什么AlertDialog.Builder(Context context)只接受Activity作为参数?

在我正在进行的学习过程中(这次是对话框),我发现这有效:

  AlertDialog.Builder builder = new AlertDialog.Builder(this);
Run Code Online (Sandbox Code Playgroud)

虽然以下方法不起作用(运行时因WindowManager $ BadTokenException而失败):

  AlertDialog.Builder builder = new AlertDialog.Builder(this.getApplicationContext());
Run Code Online (Sandbox Code Playgroud)

我不明白为什么,因为AlertDialog.Builder 的构造函数被定义为接受Context作为参数,而不是Activity:

public AlertDialog.Builder(Context context)

构造函数使用此构建器的上下文及其创建的AlertDialog.

我错过了什么?

android android-context android-alertdialog android-activity

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

什么TtsService可以解释playEarcon()缺少onUtteranceCompleted()?

不久前,我发现playEarcon() 永远不会产生 onUtteranceCompleted().

在我刚才解释认为文件的时间"时的讲话被称为合成为" onUtteranceCompleted()暂时不适用的耳标,因为,一个耳标是不是真的TTS综合后的结果.

但是再看看Android的源代码,我根本找不到能够证明我解释的解释.

关于我的测试夹具的一些事实:

  1. onUtteranceCompleted()总是到达earcon之前的话语ID.那句话是一种普通的TTS话语,而不是一种耳语.
  2. 之后的earcon 确实发挥出来(即完全符合预期).
  3. onUtteranceCompleted()因为那个earcon 永远不会出现.这是非常一致和可重复的行为.

深入研究TtsService源代码,似乎只有2种方法可能会影响到达(或缺席)onUtteranceCompleted():

  1. TtsService.processSpeechQueue()
  2. TtsService.onCompletion()

如果你检查那个代码,你会看到第三个候选者,TtsService.getSoundResource()被排除(由于我的earcon缺乏onUtteranceComplete),因为上面的事实#2:earcon总是在玩,因此getSoundResource()不可能返回null.

使用相同的逻辑,第一个候选者TtsService.processSpeechQueue()也可以排除,对于相同的事实#2:earcon总是在播放,因此总是执行以下2个关键语句:

1108   mPlayer.setOnCompletionListener(this);
...
1111   mPlayer.start();
Run Code Online (Sandbox Code Playgroud)

所以,我们只剩下第二个候选人,TtsService.onCompletion(),作为一个playEarcon() 永远不会产生的 原因的可能解释onUtteranceCompleted():

public void onCompletion(MediaPlayer arg0) {
  // mCurrentSpeechItem may become null if it is stopped at the same
  // time it completes.
  SpeechItem currentSpeechItemCopy = mCurrentSpeechItem;
  if (currentSpeechItemCopy != null) {
    String …
Run Code Online (Sandbox Code Playgroud)

android text-to-speech onutterancecompleted android-mediaplayer

34
推荐指数
1
解决办法
721
查看次数

如何在同一台设备上安装Debug和Release apk?

在继续开发我的应用程序在真实手机上进行测试的同时,我需要在同一部手机上安装它的发布版本,以用于演示目的(由于没有日志,发布版本的响应速度更快).

问题是,在Android中的同一设备上共存两个应用程序的唯一方法是使用不同的包名.

但包名称需要重新分解和大量传播手动修复...更不用说这会混淆版本控制......

理想情况下,Eclipse + ADT将允许附加一个修饰符变量,该变量将自动为调试/发布生成不同的包名称并允许这种共存,但我找不到任何允许这样做的机制.

你知道如何解决这个问题吗?

欢迎创意解决方案和想法.

eclipse android adt apk android-install-apk

23
推荐指数
2
解决办法
4250
查看次数

KeyEvent.ACTION_UP为ACTION_MEDIA_BUTTON触发了TWICE

我有这个ACTION_MEDIA_BUTTON的广播接收器,它实际上适用于Android 2.x和Android 4.1,但由于一些奇怪的原因,在Android 2.x(仅限)上,我得到每个甚至两次(只需单击暂停按钮,当然):

public class RemoteControlReceiver extends BroadcastReceiver {
  private static long prevEventTime = 0;

  @Override
  public void onReceive(Context ctx, Intent intent) {
    if (Intent.ACTION_MEDIA_BUTTON.equals(intent.getAction())) {
      KeyEvent event = (KeyEvent)intent.getParcelableExtra(Intent.EXTRA_KEY_EVENT);
      long curEventTime = event.getEventTime();
      if (event != null && (event.getAction() == KeyEvent.ACTION_UP) /*&& (curEventTime != prevEventTime)*/) {
        int keycode = event.getKeyCode();
        switch (keycode)
        {
          case KeyEvent.KEYCODE_MEDIA_NEXT:
            Log.i(TAG, "KEYCODE_MEDIA_NEXT"); 
            break;
          case KeyEvent.KEYCODE_HEADSETHOOK:
            Log.i(TAG, "KEYCODE_HEADSETHOOK" + " " +  curEventTime + " <> " + …
Run Code Online (Sandbox Code Playgroud)

android broadcastreceiver android-audiomanager

20
推荐指数
2
解决办法
4422
查看次数