相关疑难解决方法(0)

在应用程序内更改区域设置

我的用户可以更改应用内的区域设置(他们可能希望将手机设置保留为英文,但可以用法语,荷兰语或任何其他语言阅读我的应用内容...)

为什么这个在1.5/1.6中完全正常但在2.0中不再是???

@Override
public boolean onOptionsItemSelected(MenuItem item) {
    switch(item.getItemId()) {
    case 201:
        Locale locale2 = new Locale("fr"); 
        Locale.setDefault(locale2);
        Configuration config2 = new Configuration();
        config2.locale = locale2;
        getBaseContext().getResources().updateConfiguration(
            config2, getBaseContext().getResources().getDisplayMetrics());
        // loading data ...
        refresh();
        // refresh the tabs and their content
        refresh_Tab ();   
     break;
     case 201: etc...
Run Code Online (Sandbox Code Playgroud)

问题是,每当用户通过以上代码行时,MENU"缩小"越来越多......

这是缩小的菜单:

@Override
public boolean onCreateOptionsMenu(Menu menu) {
    menu.add(0, 100, 1, "REFRESH").setIcon(android.R.drawable.ic_menu_compass);
    SubMenu langMenu = menu.addSubMenu(0, 200, 2, "NL-FR").setIcon(android.R.drawable.ic_menu_rotate);
        langMenu.add(1, 201, 0, "Nederlands");
        langMenu.add(1, 202, 0, "Français");
    menu.add(0, 250, 4, R.string.OptionMenu2).setIcon(android.R.drawable.ic_menu_send);
    menu.add(0, 300, …
Run Code Online (Sandbox Code Playgroud)

android locale menu

195
推荐指数
5
解决办法
15万
查看次数

什么可能导致Android活动从相机返回时无限重新启动自己?

我的应用程序中有一个奇怪的错误,当我从相机应用程序返回后,在拍照后,活动会在无限循环中重新启动自身.

UI流程如下:

  1. 主要活动 - >
  2. 接受照片活动 - >在onCreate()中使用startActivityForResult()打开相机
  3. 相机屏幕 - >拍照(或取消) - >返回接受照片
  4. 完全创建"接受照片"屏幕,并立即停止并在无限循环中重新创建

奇怪的是,它只发生在一些相机上.在运行Jellybean的Nexus S上,相机的行为正常,而Camera Zoom FX则会导致此错误.在运行ICS的Archos G9平板电脑上,相机和Zoom FX都会导致错误.

我已经逐步检查了代码,但是找不到重新启动调用的来源.当我在第二个(和后续的)onCreate()调用中停止调试器时,在调用堆栈中有一个ActivityThread.handleRelaunchActivity()调用.它的Intent没有太多信息:动作为null,类是AcceptPhoto.mFlags具有603979776值,我不知道如何将其转换为实际的intent标志.

不过,这种古怪并不止于此.在我的平板电脑上,我第一次拍照时,应用程序很好.如果我尝试拍第二张照片,屏幕会变得疯狂.如果我没有拍摄秒图片,而是返回上一个屏幕,那么在我打开新活动之前一切正常.无论从哪里开始,如果我一直返回到根活动并开始一个新的活动,它就会开始闪烁.

我会尝试发布一些代码,但我怀疑这个错误不是由我的代码引起的,而是我在底层的Android代码中触发了一些东西.我希望的是,也许有人可以指出我正确的方向找到解决这个bug的方法.任何事都有帮助,所以我感谢你的任何想法!

用于打开相机的代码(使用实用程序类在AcceptPhoto.onCreate()中调用):

private void openCamera(Context context) {
    Intent pictureIntent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
    File tempFile = getTempFile(context);
    try {
        if (tempFile != null) {

            pictureIntent.putExtra(MediaStore.EXTRA_OUTPUT, Uri.fromFile(tempFile));

            ((Activity) context).startActivityForResult(pictureIntent, GET_ITEM_PHOTO);
        } else {
            Toast.makeText(context, "Could not create temp file", Toast.LENGTH_SHORT).show();
        }
    } catch (Exception e) {
        Toast.makeText(context, "Error opening camera " + e.getMessage(), Toast.LENGTH_LONG).show();
        e.printStackTrace();
    }
}
Run Code Online (Sandbox Code Playgroud)

用于显示图片的代码,在AcceptPhoto.onActivityResult()中调用:

private void …
Run Code Online (Sandbox Code Playgroud)

camera android restart infinite-loop android-activity

11
推荐指数
1
解决办法
4390
查看次数

多语言android应用程序?

我必须让我的Android应用程序在3种语言,即德语,英语和荷兰语.我在我的android应用程序名称values-devalues-nlres目录中创建了三个文件夹.现在,当用户选择特定语言时,我执行以下代码:

Resources res = getResources();
Configuration newConfig = new Configuration(res.getConfiguration());
newConfig.locale = Locale.ENGLISH;
res.updateConfiguration(newConfig, null);
Run Code Online (Sandbox Code Playgroud)

不同值文件夹中的所有字符串都具有相同的名称,即values文件夹中名称为add_site的字符串在文件夹中具有相同的名称the values-de但具有不同的值.当我将语言环境设置为德语时,我的应用程序没有加载德语值?可能是什么问题呢?

谢谢你的帮助.

android locale

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