2015-12-21 73 views
0

我有非常简单spinnser其中我正在显示两个值1 =>英语2 =>希伯来语微调值没有被选择

和我重新启动整个活动上从所述选择的任何值(要更改UI)微调但问题是我的活动只是重新启动案件1只请帮助我找出问题。

下面是我使用

languageSpinner.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() { 
      @Override 
      public void onItemSelected(AdapterView<?> parent, View view, int position, long id) { 

       if (!isFistLaunch) { 

        String email = mEmailEditText.getText().toString(); 
        String pass = mPasswordEditText.getText().toString(); 
        Intent intent = new Intent(MainActivity.this, MainActivity.class); 
        intent.putExtra("typed_email", email); 
        intent.putExtra("typed_pass", pass); 
        mUserSession.setUserLanguage(lang[position]); 
        Toast.makeText(MainActivity.this, "Spinner position = " + position, Toast.LENGTH_SHORT).show(); 
        startActivity(intent); 
        MainActivity.this.finish(); 

       } else { 
        isFistLaunch = false; 
       } 
      } 

      @Override 
      public void onNothingSelected(AdapterView<?> parent) { 

      } 
     }); 

我也把土司在侧,但它仅显示一个时间码...

微调恰好工作,我想但只能在我的设备上使用。所有其他设备都不会显示希伯来语的吐司。他们只显示Toast英语。

有人可以告诉我这里有什么问题吗?由于

回答

1

试试这个

ArrayAdapter<String> dataAdapter = new ArrayAdapter<String>(this,android.R.layout.simple_spinner_item, states); 
dataAdapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item); 
spTimeName.setAdapter(dataAdapter); 

if (!compareValue.equals(null)) { 
    int spinnerPosition = dataAdapter.getPosition(compareValue); 
    spTimeName.setSelection(spinnerPosition); 
} 
0

问题是,当它得到数组的第一个位置的活动负载是语言1

Spinner languageSpinner = (Spinner) findViewById(R.id.spinner); 

    String lang[] = {"Select lang","lang1", "lang2"}; 
    ArrayAdapter<String> adapter = new ArrayAdapter<String>(JobCardActivity.this, android.R.layout.simple_list_item_1, lang); 
    languageSpinner.setAdapter(adapter); 

      languageSpinner.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() { 
       @Override 
       public void onItemSelected(AdapterView<?> parent, View view, int position, long id) { 

         if(position != 0 || (!lang[position].equals("Select lang"))){ 

         Toast.makeText(JobCardActivity.this, "Spinner position = " + position, Toast.LENGTH_SHORT).show(); 
        } 
       } 

       @Override 
       public void onNothingSelected(AdapterView<?> parent) { 

       } 
      }); 
+0

首次发布时没有获得任何选项。为了避免这个我把条件..因为你可以检查我的代码 –

+0

没有必要。因为现在你第一次总是拿到第0位 – Ajinkya

+0

好。我会尝试一下,然后让你知道 –

0

为了切换语言为您的应用程序,我建议你向我的下面代码:

protected static void setLocale(Context context, String language) { 
     // if not exist, set EN as default 
     Locale locale = new Locale(language); 
     final Locale[] availableLocales=Locale.getAvailableLocales(); 
     if (!(Arrays.asList(availableLocales).contains(locale))) { 
      locale = new Locale("en"); 
     } 
     Locale.setDefault(locale); 
     Configuration config = new Configuration(); 
     config.locale = locale; 
     ((Activity) context).getBaseContext().getResources().updateConfiguration(config, 
       ((Activity) context).getBaseContext().getResources().getDisplayMetrics()); 

     // refresh activity to reload resources 
     Intent refresh = ((Activity) context).getIntent(); 
     ((Activity) context).overridePendingTransition(0, 0); 
     refresh.addFlags(Intent.FLAG_ACTIVITY_NO_ANIMATION); 
     ((Activity) context).finish(); 
     ((Activity) context).overridePendingTransition(0, 0); 
     context.startActivity(refresh); 
    } 

    protected static void switchLocale(Context context) { 
     Locale current = context.getResources().getConfiguration().locale; 
     if (current.getLanguage().equals("he")){ 
      setLocale(context, "en"); 
     } else { 
      setLocale(context, "he"); 
     } 
    } 

然后,里面onClickButtonSpinneronItemSelected ...,例如,你可以叫switchLocale(mContext);

P/S:英语资源将被存储在\app\src\main\res\values,希伯来语资源将被存储在\app\src\main\res\values-he

您可以在Google's Doc - Supporting Different Languages阅读更多。

希望这会有所帮助!

+0

兄弟你有什么想法如何刷新活动内容(布局和文本),而无需重新开始活动。并且如果没有办法在不重新启动的情况下刷新内容。那么我该如何刷新那些目前处于暂停状态的活动的内容。因为当我重新启动它们时,我会丢失它们的数据和上下文。如何克服这个问题。谢谢 –

+0

IMO,你可以将数据保存在公共静态变量中。 – BNK

+0

我认为这不是一个有效的解决方案。 –