android.content.res.Resources $ NotFoundException:String数组资源ID#0x7f070002 [英] android.content.res.Resources$NotFoundException: String array resource ID #0x7f070002

查看:590
本文介绍了android.content.res.Resources $ NotFoundException:String数组资源ID#0x7f070002的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我有问题越来越为strings.xml中的字符串数组。

该错误是:

  android.content.res.Resources $ NotFoundException:String数组资源ID#0x7f070002
            在android.content.res.Resources.getStringArray(Resources.java:472)
            在com.klh.lehava.MainActivity.onCreate(MainActivity.java:87)

基本上我试图做的是得到一个字符串数组名为 planets_array ,并将其存储到 mPlanetTitles
这是谷歌的例子导航抽屉一个,我下载了它从他们的网站并修改了它。

出于某种原因,我没有得到在Nexus 4(安卓5.0棒棒糖)这个错误,但我得到的Galaxy S3的问题,LG G2(安卓4.4.4)

下面是我的全code:

 公共类MainActivity延伸活动{
    私有静态MainActivity实例;    公共MainActivity(){
        例如=这一点;
    }
    私人静态字符串response_str;
    私有静态的Htt presponse结果;
    私人DrawerLayout mDrawerLayout;
    私有静态的ListView mDrawerList;
    私人ActionBarDrawerToggle mDrawerToggle;
    私人ArrayAdapter<串GT;适配器1;    私人静态字符串isUserLoggedIn;    私人静态字符串的getURL;    公共字符串的getURL(){
        返回的getURL;
    }    公共静态最后的字符串标记=loginCookie;    私人CharSequence的mDrawerTitle;
    私有静态的CharSequence mTitle;    //私人最终的ArrayList<串GT; assignArr0 =新的ArrayList<串GT;();
    私有静态的String [] mPlanetTitles;
    私有静态的String [] mPlanetTitlesDisconnected;
    私有静态的String [] mPlanetTitlesConnected;
    私有静态诠释检查;
    私有String []尼瓦尔;
    @覆盖
    保护无效的onCreate(捆绑savedInstanceState){        super.onCreate(savedInstanceState);
        的setContentView(R.layout.activity_main);        的WebView的WebView;
        网页流量=(的WebView)findViewById(R.id.webview);        mTitle = mDrawerTitle =的getTitle();
        mPlanetTitles = getResources()getStringArray(R.array.planets_array)。
        mPlanetTitlesDisconnected = getResources()getStringArray(R.array.mPlanetTitlesDisconnected)。
        mPlanetTitlesConnected = getResources()getStringArray(R.array.mPlanetTitlesConnected)。
        mDrawerLayout =(DrawerLayout)findViewById(R.id.drawer_layout);
        mDrawerList =(ListView控件)findViewById(R.id.left_drawer);
        //抽屉打开时设置覆盖的主要内容自定义阴影
        mDrawerLayout.setDrawerShadow(R.drawable.drawer_shadow,GravityCompat.START);
        //设置抽屉的列表视图与项目,然后点击监听器
        适配器1 =新ArrayAdapter<串GT;(这一点,
                R.layout.drawer_list_item,mPlanetTitlesDisconnected);
        mDrawerList.setAdapter(适配器1);
        mDrawerList.setOnItemClickListener(新DrawerItemClickListener());        //使动作条的应用程序图标表现为动作切换导航抽屉
        getActionBar()setDisplayHomeAsUpEnabled(真)。
        getActionBar()setHomeButtonEnabled(真)。
        // ActionBarDrawerToggle联系在一起的适当交互
        滑动抽屉以及操作栏的程序图标之间//
        mDrawerToggle =新ActionBarDrawerToggle(
                本,
                mDrawerLayout,
                R.drawable.ic_drawer,
                R.string.drawer_open,
                R.string.drawer_close
        ){
            公共无效onDrawerClosed(查看视图){
                。getActionBar()的setTitle(mTitle);
                invalidateOptionsMenu(); //创建调用上prepareOptionsMenu()
            }            公共无效onDrawerOpened(查看drawerView){
                。getActionBar()的setTitle(mDrawerTitle);
                invalidateOptionsMenu(); //创建调用上prepareOptionsMenu()
            }
        };
        mDrawerLayout.setDrawerListener(mDrawerToggle);        如果(savedInstanceState == NULL){
            选择信息(0);
        }
    }
    @覆盖
    公共布尔onCreateOptionsMenu(菜单菜单){
        MenuInflater吹气= getMenuInflater();
        inflater.inflate(R.menu.main,菜单);
        返回super.onCreateOptionsMenu(菜单);
    }    @覆盖
    公共布尔onOptionsItemSelected(菜单项项){
        //操作栏的家/跟进行动应打开或关闭抽屉。
        // ActionBarDrawerToggle将照顾这。
        如果(mDrawerToggle.onOptionsItemSelected(项目)){
            返回true;
        }
        //手柄操作按钮
        开关(item.getItemId()){
            默认:
                返回super.onOptionsItemSelected(项目);
        }
    }
    私有类DrawerItemClickListener实现ListView.OnItemClickListener {
        @覆盖
        公共无效onItemClick(适配器视图<>母公司,观景,INT位置,长的id){
            选择信息(位置);
        }
    }    私人无效选择信息(INT位置){
        //更新替换片段的主要内容
        捆绑ARGS =新包();        // isUserLoggedIn = IsLoggedIn();
        如果(isUserLoggedIn == NULL){
            片段片段=新MainFragment();
            args.putInt(MainFragment.ARG_PLANET_NUMBER,位置);            fragment.setArguments(参数);            FragmentManager fragmentManager = getFragmentManager();
            fragmentManager.beginTransaction()取代(R.id.content_frame,片段).commit()。            mDrawerList.setItemChecked(位置,真正的);
            的setTitle(mPlanetTitles [位置]);
            mDrawerLayout.closeDrawer(mDrawerList);
        }其他{
            如果(isUserLoggedIn.equals(0)){
                如果(位置== 0){
                    片段片段=新MainFragment();
                    args.putInt(MainFragment.ARG_PLANET_NUMBER,位置);                    fragment.setArguments(参数);                    FragmentManager fragmentManager = getFragmentManager();
                    fragmentManager.beginTransaction()取代(R.id.content_frame,片段).commit()。                    mDrawerList.setItemChecked(位置,真正的);
                    的setTitle(mPlanetTitles [位置]);
                    mDrawerLayout.closeDrawer(mDrawerList);
                }
                如果(位置== 1){
                    片段片段=新AboutFragment();
                    args.putInt(AboutFragment.ARG_PLANET_NUMBER,位置);                    fragment.setArguments(参数);                    FragmentManager fragmentManager = getFragmentManager();
                    fragmentManager.beginTransaction()取代(R.id.content_frame,片段).commit()。                    mDrawerList.setItemChecked(位置,真正的);
                    的setTitle(mPlanetTitles [位置]);
                    mDrawerLayout.closeDrawer(mDrawerList);
                }
            }否则如果(isUserLoggedIn.equals(1)){
                如果(位置== 0){
                    片段片段=新InOutFragment();
                    args.putInt(InOutFragment.ARG_PLANET_NUMBER,位置);                    fragment.setArguments(参数);                    FragmentManager fragmentManager = getFragmentManager();
                    fragmentManager.beginTransaction()取代(R.id.content_frame,片段).commit()。                    mDrawerList.setItemChecked(位置,真正的);
                    的setTitle(mPlanetTitles [位置]);
                    mDrawerLayout.closeDrawer(mDrawerList);
                }
                如果(位置== 1){
                    片段片段=新AddEventFragment();
                    args.putInt(AddEventFragment.ARG_PLANET_NUMBER,位置);                    fragment.setArguments(参数);                    FragmentManager fragmentManager = getFragmentManager();
                    fragmentManager.beginTransaction()取代(R.id.content_frame,片段).commit()。                    mDrawerList.setItemChecked(位置,真正的);
                    的setTitle(mPlanetTitles [位置]);
                    mDrawerLayout.closeDrawer(mDrawerList);
                }
                如果(位置== 2){
                    片段片段=新AboutFragment();
                    args.putInt(AboutFragment.ARG_PLANET_NUMBER,位置);                    fragment.setArguments(参数);                    FragmentManager fragmentManager = getFragmentManager();
                    fragmentManager.beginTransaction()取代(R.id.content_frame,片段).commit()。                    mDrawerList.setItemChecked(位置,真正的);
                    的setTitle(mPlanetTitles [位置]);
                    mDrawerLayout.closeDrawer(mDrawerList);
                }
                如果(位置== 3){
                    片段片段=新WebLogoutFragment();
                    args.putInt(WebLogoutFragment.ARG_PLANET_NUMBER,位置);                    fragment.setArguments(参数);                    FragmentManager fragmentManager = getFragmentManager();
                    fragmentManager.beginTransaction()取代(R.id.content_frame,片段).commit()。                    mDrawerList.setItemChecked(0,真);
                    的setTitle(mPlanetTitles [0]);
                    mDrawerLayout.closeDrawer(mDrawerList);                }
            }
        }        //更新所选项目和标题,然后关上抽屉    }    @覆盖
    公共无效的setTitle(CharSequence的标题){
        mTitle =称号;
        。getActionBar()的setTitle(mTitle);
    }    @覆盖
    保护无效onPostCreate(捆绑savedInstanceState){
        super.onPostCreate(savedInstanceState);
        //同步onRestoreInstanceState后切换状态已经发生。
        mDrawerToggle.syncState();
    }    @覆盖
    公共无效onConfigurationChanged(配置NEWCONFIG){
        super.onConfigurationChanged(NEWCONFIG);
        //把任何配置更改抽屉toggls
        mDrawerToggle.onConfigurationChanged(NEWCONFIG);
    }
    公共静态类PlanetFragment扩展片段{
        公共静态最后弦乐ARG_PLANET_NUMBER =planet_number;
        公共PlanetFragment(){
            //为子片段需要空的构造
        }        @覆盖
        公共查看onCreateView(LayoutInflater充气器,容器的ViewGroup,
                                 捆绑savedInstanceState){
            查看rootView = inflater.inflate(R.layout.fragment_planet,集​​装箱,FALSE);
            。INT I = getArguments()调用getInt(ARG_PLANET_NUMBER);
            。字符串星球= getResources()getStringArray(R.array.planets_array)[我]            INT imageId = getResources()。则getIdentifier(planet.toLowerCase(Locale.getDefault()),
                    绘制,getActivity()getPackageName());
            ((ImageView的)rootView.findViewById(R.id.image))setImageResource(imageId)。
            。getActivity()的setTitle(行星); * /
            返回null;
        }
    }    公共静态类AboutFragment扩展片段{
        公共静态最后弦乐ARG_PLANET_NUMBER =planet_number;
        公共AboutFragment(){
            //为子片段需要空的构造
        }        @覆盖
        公共查看onCreateView(LayoutInflater充气器,容器的ViewGroup,
                                 捆绑savedInstanceState){
            查看rootView = inflater.inflate(R.layout.fragment_about,集装箱,FALSE);
            。INT I = getArguments()调用getInt(ARG_PLANET_NUMBER);
            。字符串星球= getResources()getStringArray(R.array.planets_array)[我]            getActivity()的setTitle(行星)。            返回rootView;
        }
    }    公共静态类MainFragment扩展片段{
        公共静态最后弦乐ARG_PLANET_NUMBER =planet_number;        公共静态最后弦乐MY_DOMAIN =klh-dev.com;        公共MainFragment(){
            //为子片段需要空的构造
        }        @覆盖
        公共查看onCreateView(LayoutInflater充气器,容器的ViewGroup,
                                 捆绑savedInstanceState){            查看rootView = inflater.inflate(R.layout.fragment_web,集装箱,FALSE);
            。INT I = getArguments()调用getInt(ARG_PLANET_NUMBER);
            。字符串星球= getResources()getStringArray(R.array.planets_array)[我]
            的WebView的WebView;
            网页流量=(的WebView)rootView.findViewById(R.id.webview);            webview.setWebViewClient(新WebViewClient(){
                @覆盖
                公共无效onPageFinished(的WebView视图,字符串URL){
                    串WEBURL = view.getUrl();
                    字符串饼干= CookieManager.getInstance()的getCookie(URL)。
                    的getURL = view.getUrl();
                    isUserLoggedIn = IsLoggedIn();
                    Log.d(TAG,字符串中的所有饼干:+饼干);
                    如果(weburl.equals(http://www.klh-dev.com/lehava/lehava/system/mlogin.php)){
                        mDrawerList.setItemChecked(0,真);
                        。getActivity()getActionBar()的setTitle(התחברות);
                    }否则如果(weburl.equals(http://www.klh-dev.com/lehava/lehava/system/mtimecounter.php)){
                        mDrawerList.setItemChecked(1,真);
                        getActivity()getActionBar()的setTitle(כניסה/יציאה)。。
                    }否则如果(weburl.equals(http://www.klh-dev.com/lehava/lehava/system/madd.php)){
                        mDrawerList.setItemChecked(2,真);
                        。getActivity()getActionBar()的setTitle(הוספתאירוע);
                    }
                }
            });
            webview.getSettings()setJavaScriptEnabled(真)。
            。webview.getSettings()setUseWideViewPort(真);
            webview.setWebChromeClient(新WebChromeClient());
            webview.loadUrl(http://www.klh-dev.com/lehava/lehava/system/mlogin.php);
            getActivity()的setTitle(行星)。            返回rootView;
        }
    }    公共静态类InOutFragment扩展片段{
        公共静态最后弦乐ARG_PLANET_NUMBER =planet_number;        公共静态最后弦乐MY_DOMAIN =klh-dev.com;        公共InOutFragment(){
            //为子片段需要空的构造
        }
        @覆盖
        公共查看onCreateView(LayoutInflater充气器,容器的ViewGroup,
                                 捆绑savedInstanceState){            查看rootView = inflater.inflate(R.layout.fragment_web,集装箱,FALSE);
            。INT I = getArguments()调用getInt(ARG_PLANET_NUMBER);
            。字符串星球= getResources()getStringArray(R.array.planets_array)[我]
            的WebView的WebView;
            网页流量=(的WebView)rootView.findViewById(R.id.webview);            webview.setWebViewClient(新WebViewClient(){
                @覆盖
                公共无效onPageFinished(的WebView视图,字符串URL){
                    串WEBURL = view.getUrl();
                    字符串饼干= CookieManager.getInstance()的getCookie(URL)。
                    的getURL = view.getUrl();
                    isUserLoggedIn = IsLoggedIn();
                    Log.d(TAG,字符串中的所有饼干:+饼干);
                    如果(weburl.equals(http://www.klh-dev.com/lehava/lehava/system/mlogin.php)){
                        mDrawerList.setItemChecked(0,真);
                        。getActivity()getActionBar()的setTitle(התחברות);
                    }否则如果(weburl.equals(http://www.klh-dev.com/lehava/lehava/system/mtimecounter.php)){
                        mDrawerList.setItemChecked(1,真);
                        getActivity()getActionBar()的setTitle(כניסה/יציאה)。。
                    }否则如果(weburl.equals(http://www.klh-dev.com/lehava/lehava/system/madd.php)){
                        mDrawerList.setItemChecked(2,真);
                        。getActivity()getActionBar()的setTitle(הוספתאירוע);
                    }
                }
            });
            webview.getSettings()setJavaScriptEnabled(真)。
            。webview.getSettings()setUseWideViewPort(真);
            webview.setWebChromeClient(新WebChromeClient());
            webview.loadUrl(http://www.klh-dev.com/lehava/lehava/system/mtimecounter.php);
            getActivity()的setTitle(行星)。            返回rootView;
        }
    }    公共静态类AddEventFragment扩展片段{
        公共静态最后弦乐ARG_PLANET_NUMBER =planet_number;        公共静态最后弦乐MY_DOMAIN =klh-dev.com;        公共AddEventFragment(){
            //为子片段需要空的构造
        }        @覆盖
        公共查看onCreateView(LayoutInflater充气器,容器的ViewGroup,
                                 捆绑savedInstanceState){            查看rootView = inflater.inflate(R.layout.fragment_web,集装箱,FALSE);
            。INT I = getArguments()调用getInt(ARG_PLANET_NUMBER);
            。字符串星球= getResources()getStringArray(R.array.planets_array)[我]
            的WebView的WebView;
            网页流量=(的WebView)rootView.findViewById(R.id.webview);            webview.setWebViewClient(新WebViewClient(){
                @覆盖
                公共无效onPageFinished(的WebView视图,字符串URL){
                    串WEBURL = view.getUrl();
                    字符串饼干= CookieManager.getInstance()的getCookie(URL)。
                    的getURL = view.getUrl();
                    isUserLoggedIn = IsLoggedIn();
                    Log.d(TAG,字符串中的所有饼干:+饼干);
                    如果(weburl.equals(http://www.klh-dev.com/lehava/lehava/system/mlogin.php)){
                        mDrawerList.setItemChecked(0,真);
                        。getActivity()getActionBar()的setTitle(התחברות);
                    }否则如果(weburl.equals(http://www.klh-dev.com/lehava/lehava/system/mtimecounter.php)){
                        mDrawerList.setItemChecked(1,真);
                        getActivity()getActionBar()的setTitle(כניסה/יציאה)。。
                    }否则如果(weburl.equals(http://www.klh-dev.com/lehava/lehava/system/madd.php)){
                        mDrawerList.setItemChecked(2,真);
                        。getActivity()getActionBar()的setTitle(הוספתאירוע);
                    }
                }
            });
            webview.getSettings()setJavaScriptEnabled(真)。
            。webview.getSettings()setUseWideViewPort(真);
            webview.setWebChromeClient(新WebChromeClient());
            webview.loadUrl(http://www.klh-dev.com/lehava/lehava/system/madd.php);
            getActivity()的setTitle(行星)。            返回rootView;
        }
    }    公共静态类WebLogoutFragment扩展片段{
        公共静态最后弦乐ARG_PLANET_NUMBER =planet_number;
        公共WebLogoutFragment(){
            //为子片段需要空的构造
        }        @覆盖
        公共查看onCreateView(LayoutInflater充气器,容器的ViewGroup,
                                 捆绑savedInstanceState){
            查看rootView = inflater.inflate(R.layout.fragment_web,集装箱,FALSE);            的WebView的WebView;
            网页流量=(的WebView)rootView.findViewById(R.id.webview);            webview.setWebViewClient(新WebViewClient(){
                @覆盖
                公共无效onPageFinished(的WebView视图,字符串URL){
                    串WEBURL = view.getUrl();
                    字符串饼干= CookieManager.getInstance()的getCookie(URL)。
                    的getURL = view.getUrl();
                    isUserLoggedIn = IsLoggedIn();
                    Log.d(TAG,字符串中的所有饼干:+饼干);
                    如果(weburl.equals(http://www.klh-dev.com/lehava/lehava/system/mlogin.php)){
                        mDrawerList.setItemChecked(0,真);
                        。getActivity()getActionBar()的setTitle(התחברות);
                    }否则如果(weburl.equals(http://www.klh-dev.com/lehava/lehava/system/mlogin.php?log=1)){
                        mDrawerList.setItemChecked(0,真);
                        。getActivity()getActionBar()的setTitle(התחברות);
                    }否则如果(weburl.equals(http://www.klh-dev.com/lehava/lehava/system/mtimecounter.php)){
                        mDrawerList.setItemChecked(1,真);
                        getActivity()getActionBar()的setTitle(כניסה/יציאה)。。
                    }否则如果(weburl.equals(http://www.klh-dev.com/lehava/lehava/system/madd.php)){
                        mDrawerList.setItemChecked(2,真);
                        。getActivity()getActionBar()的setTitle(הוספתאירוע);
                    }否则如果(weburl.equals(http://www.klh-dev.com/lehava/lehava/system/mlogin.php?log=1)){
                        mDrawerList.setItemChecked(2,真);
                        。getActivity()getActionBar()的setTitle(התחברות);
                    }
                }
            });
            webview.getSettings()setJavaScriptEnabled(真)。
            。webview.getSettings()setUseWideViewPort(真);
            webview.setWebChromeClient(新WebChromeClient());
            webview.loadUrl(http://www.klh-dev.com/lehava/lehava/system/mlogout.php);
            返回rootView;
        }
    }    公共静态BasicCookieStore getCookieStore(字符串饼干,字符串域){
        的String [] = cookieValues​​ cookies.split();
        BasicCookieStore CS =新BasicCookieStore();        BasicClientCookie饼干;
        的for(int i = 0; I< cookieValues​​.length;我++){
            的String [] =拆分cookieValues​​ [I] .split(=);
            如果(split.length == 2)
                饼干=新BasicClientCookie(分割[0],拆分[1]);
            其他
                饼干=新BasicClientCookie(分割[0],NULL);            cookie.setDomain(域);
            cs.addCookie(饼干);
        }
        返回CS;    }        公共无效UpdateMenu()
        {
            runOnUiThread(新的Runnable()
            {
                公共无效的run()
                {
                    如果(isUserLoggedIn == NULL){
                        isUserLoggedIn = IsLoggedIn();
                    }
                    INT I;
                    SparseBooleanArray localSparseBooleanArray;
                    如果(isUserLoggedIn.equals(0)){
                        mPlanetTitles = mPlanetTitlesDisconnected;
                    }
                    I = mDrawerList.getCount();
                    localSparseBooleanArray = mDrawerList.getCheckedItemPositions();                    对于(INT J = 0; J< I; J ++)
                    {
                        如果(isUserLoggedIn.equals(1)){
                            mPlanetTitles = mPlanetTitlesConnected;
                        }
                        mDrawerList.setAdapter(新ArrayAdapter(例如,R.layout.drawer_list_item,mPlanetTitles));
                        mDrawerList.setItemChecked(选中,真);
                        如果(localSparseBooleanArray.get(J)){
                            检查= j的;
                        }
                    }
                }
            });
        }
        公共无效showToast(最后弦乐吐司)
        {
            runOnUiThread(新的Runnable(){
                公共无效的run()
                {
                    Toast.makeText(例如,面包,Toast.LENGTH_SHORT).show();
                }
            });
        }        公共静态字符串IsLoggedIn()
        {
            新主题(新的Runnable()
            {
                公共无效的run()
                {
                    BasicCookieStore localBasicCookieStore = getCookieStore(CookieManager.getInstance()的getCookie(的getURL),klh-dev.com);
                    BasicHttpContext localBasicHttpContext =新BasicHttpContext();
                    DefaultHttpClient localDefaultHttpClient =新DefaultHttpClient();
                    localDefaultHttpClient.setCookieStore(localBasicCookieStore);
                    localBasicHttpContext.setAttribute(http.cookie店,localBasicCookieStore);
                    HTTPGET localHttpGet =新HTTPGET(http://klh-dev.com/lehava/lehava/system/isloggedin.php);
                    尝试
                    {
                        结果= localDefaultHttpClient.execute(localHttpGet,localBasicHttpContext);
                        response_str = EntityUtils.toString(result.getEntity());
                        的System.out.println(response_str);
                        instance.UpdateMenu();
                        isUserLoggedIn = response_str;
                    }
                    赶上(ClientProtocolException localClientProtocolException)
                    {
                            localClientProtocolException.printStackTrace();
                    }
                    赶上(IOException异常localIOException)
                    {
                            localIOException.printStackTrace();
                    }
                }
            })。开始();
            字符串str = response_str;
            isUserLoggedIn =海峡;
            返回海峡;
        }
    }

87号线:

  mPlanetTitles = getResources()getStringArray(R.array.planets_array)。

的strings.xml:

 <资源>
    <字符串名称=APP_NAME> Lehava< /串>
    <字符串数组名=planets_array>
        <项目>登录和LT; /项目>
        <项目>关于< /项目>
        <项目>开始转变< /项目>
        <项目>添加事件< /项目>
        <项目>注销< /项目>
    < /字符串数组>
    <字符串数组名=mPlanetTitlesDisconnected>
        <项目>登录和LT; /项目>
        <项目>关于< /项目>
    < /字符串数组>
    <字符串数组名=mPlanetTitlesConnected>
        <项目>开始转变< /项目>
        <项目>添加事件< /项目>
        <项目>关于< /项目>
        <项目>注销< /项目>
    < /字符串数组>
    <字符串名称=DRAWER_OPEN>打开抽屉式导航< /串>
    <字符串名称=drawer_close>关闭抽屉式导航< /串>
    <字符串名称=action_websearch>网络搜索和LT; /串>
< /资源>

我试图创建一个名为RES和使用getResources(资源),而不是和它没有工作。
这是我曾尝试:

 资源解析度= getResources();
mPlanetTitles = res.getStringArray(R.array.planets_array);


解决方案

请确保你没有在值的变种资源,用字符串数组只为定义所述变体的一个子集。例如:

 值-V21 / strings.xml中 - 定义
价值/ strings.xml中 - 没有定义

如果资源在至少一种变present,您将获得研究的条目,可以参考它在code,但运行时资源文件变体并不一定具有资源

I'm having problem getting a string array for strings.xml .

The error is:

android.content.res.Resources$NotFoundException: String array resource ID #0x7f070002
            at android.content.res.Resources.getStringArray(Resources.java:472)
            at com.klh.lehava.MainActivity.onCreate(MainActivity.java:87)

Basically what I'm trying to do is to get a string-array called planets_array, and store it into mPlanetTitles. This is one of google's examples for navigation drawer, and I downloaded it from their site and modified it.

For some reason I don't get this error on Nexus 4 (android 5.0 lollipop), but I do get the problem on Galaxy S3, and LG G2 (android 4.4.4)

Here is my full code:

public class MainActivity extends Activity {
    private static MainActivity instance;

    public MainActivity() {
        instance = this;
    }
    private static String response_str;
    private static HttpResponse result;
    private DrawerLayout mDrawerLayout;
    private static ListView mDrawerList;
    private ActionBarDrawerToggle mDrawerToggle;
    private ArrayAdapter<String> adapter1;

    private static String isUserLoggedIn;

    private static String getUrl;

    public String getUrl() {
        return getUrl;
    }

    public static final String TAG = "loginCookie";

    private CharSequence mDrawerTitle;
    private static CharSequence mTitle;

    //private final ArrayList<String> assignArr0 = new ArrayList<String>();
    private static String[] mPlanetTitles;
    private static String[] mPlanetTitlesDisconnected;
    private static String[] mPlanetTitlesConnected;


    private static int checked;
    private String[] newAr;


    @Override
    protected void onCreate(Bundle savedInstanceState) {

        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        WebView webview;
        webview = (WebView) findViewById(R.id.webview);

        mTitle = mDrawerTitle = getTitle();
        mPlanetTitles = getResources().getStringArray(R.array.planets_array);
        mPlanetTitlesDisconnected = getResources().getStringArray(R.array.mPlanetTitlesDisconnected);
        mPlanetTitlesConnected = getResources().getStringArray(R.array.mPlanetTitlesConnected);
        mDrawerLayout = (DrawerLayout) findViewById(R.id.drawer_layout);
        mDrawerList = (ListView) findViewById(R.id.left_drawer);


        // set a custom shadow that overlays the main content when the drawer opens
        mDrawerLayout.setDrawerShadow(R.drawable.drawer_shadow, GravityCompat.START);
        // set up the drawer's list view with items and click listener
        adapter1 = new ArrayAdapter<String>(this,
                R.layout.drawer_list_item, mPlanetTitlesDisconnected);
        mDrawerList.setAdapter(adapter1);
        mDrawerList.setOnItemClickListener(new DrawerItemClickListener());

        // enable ActionBar app icon to behave as action to toggle nav drawer
        getActionBar().setDisplayHomeAsUpEnabled(true);
        getActionBar().setHomeButtonEnabled(true);


        // ActionBarDrawerToggle ties together the the proper interactions
        // between the sliding drawer and the action bar app icon
        mDrawerToggle = new ActionBarDrawerToggle(
                this,                 
                mDrawerLayout,         
                R.drawable.ic_drawer,  
                R.string.drawer_open,  
                R.string.drawer_close  
        ) {
            public void onDrawerClosed(View view) {
                getActionBar().setTitle(mTitle);
                invalidateOptionsMenu(); // creates call to onPrepareOptionsMenu()
            }

            public void onDrawerOpened(View drawerView) {
                getActionBar().setTitle(mDrawerTitle);
                invalidateOptionsMenu(); // creates call to onPrepareOptionsMenu()
            }
        };
        mDrawerLayout.setDrawerListener(mDrawerToggle);

        if (savedInstanceState == null) {
            selectItem(0);
        }
    }


    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        MenuInflater inflater = getMenuInflater();
        inflater.inflate(R.menu.main, menu);
        return super.onCreateOptionsMenu(menu);
    }



    @Override
    public boolean onOptionsItemSelected(MenuItem item) {
        // The action bar home/up action should open or close the drawer.
        // ActionBarDrawerToggle will take care of this.
        if (mDrawerToggle.onOptionsItemSelected(item)) {
            return true;
        }
        // Handle action buttons
        switch (item.getItemId()) {
            default:
                return super.onOptionsItemSelected(item);
        }
    }


    private class DrawerItemClickListener implements ListView.OnItemClickListener {
        @Override
        public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
            selectItem(position);
        }
    }

    private void selectItem(int position) {
        // update the main content by replacing fragments
        Bundle args = new Bundle();

        //isUserLoggedIn=IsLoggedIn();
        if (isUserLoggedIn == null) {
            Fragment fragment = new MainFragment();
            args.putInt(MainFragment.ARG_PLANET_NUMBER, position);

            fragment.setArguments(args);

            FragmentManager fragmentManager = getFragmentManager();
            fragmentManager.beginTransaction().replace(R.id.content_frame, fragment).commit();

            mDrawerList.setItemChecked(position, true);
            setTitle(mPlanetTitles[position]);
            mDrawerLayout.closeDrawer(mDrawerList);
        } else {
            if (isUserLoggedIn.equals("0")) {
                if (position == 0) {
                    Fragment fragment = new MainFragment();
                    args.putInt(MainFragment.ARG_PLANET_NUMBER, position);

                    fragment.setArguments(args);

                    FragmentManager fragmentManager = getFragmentManager();
                    fragmentManager.beginTransaction().replace(R.id.content_frame, fragment).commit();

                    mDrawerList.setItemChecked(position, true);
                    setTitle(mPlanetTitles[position]);
                    mDrawerLayout.closeDrawer(mDrawerList);
                }
                if (position == 1) {
                    Fragment fragment = new AboutFragment();
                    args.putInt(AboutFragment.ARG_PLANET_NUMBER, position);

                    fragment.setArguments(args);

                    FragmentManager fragmentManager = getFragmentManager();
                    fragmentManager.beginTransaction().replace(R.id.content_frame, fragment).commit();

                    mDrawerList.setItemChecked(position, true);
                    setTitle(mPlanetTitles[position]);
                    mDrawerLayout.closeDrawer(mDrawerList);
                }
            } else if (isUserLoggedIn.equals("1")) {
                if (position == 0) {
                    Fragment fragment = new InOutFragment();
                    args.putInt(InOutFragment.ARG_PLANET_NUMBER, position);

                    fragment.setArguments(args);

                    FragmentManager fragmentManager = getFragmentManager();
                    fragmentManager.beginTransaction().replace(R.id.content_frame, fragment).commit();

                    mDrawerList.setItemChecked(position, true);
                    setTitle(mPlanetTitles[position]);
                    mDrawerLayout.closeDrawer(mDrawerList);
                }
                if (position == 1) {
                    Fragment fragment = new AddEventFragment();
                    args.putInt(AddEventFragment.ARG_PLANET_NUMBER, position);

                    fragment.setArguments(args);

                    FragmentManager fragmentManager = getFragmentManager();
                    fragmentManager.beginTransaction().replace(R.id.content_frame, fragment).commit();

                    mDrawerList.setItemChecked(position, true);
                    setTitle(mPlanetTitles[position]);
                    mDrawerLayout.closeDrawer(mDrawerList);
                }
                if (position == 2) {
                    Fragment fragment = new AboutFragment();
                    args.putInt(AboutFragment.ARG_PLANET_NUMBER, position);

                    fragment.setArguments(args);

                    FragmentManager fragmentManager = getFragmentManager();
                    fragmentManager.beginTransaction().replace(R.id.content_frame, fragment).commit();

                    mDrawerList.setItemChecked(position, true);
                    setTitle(mPlanetTitles[position]);
                    mDrawerLayout.closeDrawer(mDrawerList);


                }
                if (position == 3) {
                    Fragment fragment = new WebLogoutFragment();
                    args.putInt(WebLogoutFragment.ARG_PLANET_NUMBER, position);

                    fragment.setArguments(args);

                    FragmentManager fragmentManager = getFragmentManager();
                    fragmentManager.beginTransaction().replace(R.id.content_frame, fragment).commit();

                    mDrawerList.setItemChecked(0, true);
                    setTitle(mPlanetTitles[0]);
                    mDrawerLayout.closeDrawer(mDrawerList);

                }
            }
        }



        // update selected item and title, then close the drawer

    }

    @Override
    public void setTitle(CharSequence title) {
        mTitle = title;
        getActionBar().setTitle(mTitle);
    }



    @Override
    protected void onPostCreate(Bundle savedInstanceState) {
        super.onPostCreate(savedInstanceState);
        // Sync the toggle state after onRestoreInstanceState has occurred.
        mDrawerToggle.syncState();
    }

    @Override
    public void onConfigurationChanged(Configuration newConfig) {
        super.onConfigurationChanged(newConfig);
        // Pass any configuration change to the drawer toggls
        mDrawerToggle.onConfigurationChanged(newConfig);
    }


    public static class PlanetFragment extends Fragment {
        public static final String ARG_PLANET_NUMBER = "planet_number";


        public PlanetFragment() {
            // Empty constructor required for fragment subclasses
        }

        @Override
        public View onCreateView(LayoutInflater inflater, ViewGroup container,
                                 Bundle savedInstanceState) {


            View rootView = inflater.inflate(R.layout.fragment_planet, container, false);
            int i = getArguments().getInt(ARG_PLANET_NUMBER);
            String planet = getResources().getStringArray(R.array.planets_array)[i];

            int imageId = getResources().getIdentifier(planet.toLowerCase(Locale.getDefault()),
                    "drawable", getActivity().getPackageName());
            ((ImageView) rootView.findViewById(R.id.image)).setImageResource(imageId);
            getActivity().setTitle(planet);*/
            return null;
        }
    }

    public static class AboutFragment extends Fragment {
        public static final String ARG_PLANET_NUMBER = "planet_number";


        public AboutFragment() {
            // Empty constructor required for fragment subclasses
        }

        @Override
        public View onCreateView(LayoutInflater inflater, ViewGroup container,
                                 Bundle savedInstanceState) {
            View rootView = inflater.inflate(R.layout.fragment_about, container, false);
            int i = getArguments().getInt(ARG_PLANET_NUMBER);
            String planet = getResources().getStringArray(R.array.planets_array)[i];



            getActivity().setTitle(planet);

            return rootView;
        }
    }

    public static class MainFragment extends Fragment {
        public static final String ARG_PLANET_NUMBER = "planet_number";

        public static final String MY_DOMAIN = "klh-dev.com";

        public MainFragment() {
            // Empty constructor required for fragment subclasses
        }

        @Override
        public View onCreateView(LayoutInflater inflater, ViewGroup container,
                                 Bundle savedInstanceState) {

            View rootView = inflater.inflate(R.layout.fragment_web, container, false);
            int i = getArguments().getInt(ARG_PLANET_NUMBER);
            String planet = getResources().getStringArray(R.array.planets_array)[i];


            WebView webview;
            webview = (WebView) rootView.findViewById(R.id.webview);

            webview.setWebViewClient(new WebViewClient() {
                @Override
                public void onPageFinished(WebView view, String url) {
                    String weburl = view.getUrl();
                    String cookies = CookieManager.getInstance().getCookie(url);
                    getUrl = view.getUrl();
                    isUserLoggedIn = IsLoggedIn();
                    Log.d(TAG, "All the cookies in a string:" + cookies);
                    if (weburl.equals("http://www.klh-dev.com/lehava/lehava/system/mlogin.php")) {
                        mDrawerList.setItemChecked(0, true);
                        getActivity().getActionBar().setTitle("התחברות");
                    } else if (weburl.equals("http://www.klh-dev.com/lehava/lehava/system/mtimecounter.php")) {
                        mDrawerList.setItemChecked(1, true);
                        getActivity().getActionBar().setTitle("כניסה/יציאה");
                    } else if (weburl.equals("http://www.klh-dev.com/lehava/lehava/system/madd.php")) {
                        mDrawerList.setItemChecked(2, true);
                        getActivity().getActionBar().setTitle("הוספת אירוע");
                    }
                }
            });
            webview.getSettings().setJavaScriptEnabled(true);
            webview.getSettings().setUseWideViewPort(true);
            webview.setWebChromeClient(new WebChromeClient());
            webview.loadUrl("http://www.klh-dev.com/lehava/lehava/system/mlogin.php");


            getActivity().setTitle(planet);

            return rootView;
        }
    }

    public static class InOutFragment extends Fragment {
        public static final String ARG_PLANET_NUMBER = "planet_number";

        public static final String MY_DOMAIN = "klh-dev.com";

        public InOutFragment() {
            // Empty constructor required for fragment subclasses
        }


        @Override
        public View onCreateView(LayoutInflater inflater, ViewGroup container,
                                 Bundle savedInstanceState) {

            View rootView = inflater.inflate(R.layout.fragment_web, container, false);
            int i = getArguments().getInt(ARG_PLANET_NUMBER);
            String planet = getResources().getStringArray(R.array.planets_array)[i];


            WebView webview;
            webview = (WebView) rootView.findViewById(R.id.webview);

            webview.setWebViewClient(new WebViewClient() {
                @Override
                public void onPageFinished(WebView view, String url) {
                    String weburl = view.getUrl();
                    String cookies = CookieManager.getInstance().getCookie(url);
                    getUrl = view.getUrl();
                    isUserLoggedIn = IsLoggedIn();
                    Log.d(TAG, "All the cookies in a string:" + cookies);
                    if (weburl.equals("http://www.klh-dev.com/lehava/lehava/system/mlogin.php")) {
                        mDrawerList.setItemChecked(0, true);
                        getActivity().getActionBar().setTitle("התחברות");
                    } else if (weburl.equals("http://www.klh-dev.com/lehava/lehava/system/mtimecounter.php")) {
                        mDrawerList.setItemChecked(1, true);
                        getActivity().getActionBar().setTitle("כניסה/יציאה");
                    } else if (weburl.equals("http://www.klh-dev.com/lehava/lehava/system/madd.php")) {
                        mDrawerList.setItemChecked(2, true);
                        getActivity().getActionBar().setTitle("הוספת אירוע");
                    }
                }
            });
            webview.getSettings().setJavaScriptEnabled(true);
            webview.getSettings().setUseWideViewPort(true);
            webview.setWebChromeClient(new WebChromeClient());
            webview.loadUrl("http://www.klh-dev.com/lehava/lehava/system/mtimecounter.php");


            getActivity().setTitle(planet);

            return rootView;
        }
    }

    public static class AddEventFragment extends Fragment {
        public static final String ARG_PLANET_NUMBER = "planet_number";

        public static final String MY_DOMAIN = "klh-dev.com";

        public AddEventFragment() {
            // Empty constructor required for fragment subclasses
        }

        @Override
        public View onCreateView(LayoutInflater inflater, ViewGroup container,
                                 Bundle savedInstanceState) {

            View rootView = inflater.inflate(R.layout.fragment_web, container, false);
            int i = getArguments().getInt(ARG_PLANET_NUMBER);
            String planet = getResources().getStringArray(R.array.planets_array)[i];


            WebView webview;
            webview = (WebView) rootView.findViewById(R.id.webview);

            webview.setWebViewClient(new WebViewClient() {
                @Override
                public void onPageFinished(WebView view, String url) {
                    String weburl = view.getUrl();
                    String cookies = CookieManager.getInstance().getCookie(url);
                    getUrl = view.getUrl();
                    isUserLoggedIn = IsLoggedIn();
                    Log.d(TAG, "All the cookies in a string:" + cookies);
                    if (weburl.equals("http://www.klh-dev.com/lehava/lehava/system/mlogin.php")) {
                        mDrawerList.setItemChecked(0, true);
                        getActivity().getActionBar().setTitle("התחברות");
                    } else if (weburl.equals("http://www.klh-dev.com/lehava/lehava/system/mtimecounter.php")) {
                        mDrawerList.setItemChecked(1, true);
                        getActivity().getActionBar().setTitle("כניסה/יציאה");
                    } else if (weburl.equals("http://www.klh-dev.com/lehava/lehava/system/madd.php")) {
                        mDrawerList.setItemChecked(2, true);
                        getActivity().getActionBar().setTitle("הוספת אירוע");
                    }
                }
            });
            webview.getSettings().setJavaScriptEnabled(true);
            webview.getSettings().setUseWideViewPort(true);
            webview.setWebChromeClient(new WebChromeClient());
            webview.loadUrl("http://www.klh-dev.com/lehava/lehava/system/madd.php");


            getActivity().setTitle(planet);

            return rootView;
        }
    }

    public static class WebLogoutFragment extends Fragment {
        public static final String ARG_PLANET_NUMBER = "planet_number";


        public WebLogoutFragment() {
            // Empty constructor required for fragment subclasses
        }

        @Override
        public View onCreateView(LayoutInflater inflater, ViewGroup container,
                                 Bundle savedInstanceState) {
            View rootView = inflater.inflate(R.layout.fragment_web, container, false);

            WebView webview;
            webview = (WebView) rootView.findViewById(R.id.webview);

            webview.setWebViewClient(new WebViewClient() {
                @Override
                public void onPageFinished(WebView view, String url) {
                    String weburl = view.getUrl();
                    String cookies = CookieManager.getInstance().getCookie(url);
                    getUrl = view.getUrl();
                    isUserLoggedIn = IsLoggedIn();
                    Log.d(TAG, "All the cookies in a string:" + cookies);
                    if (weburl.equals("http://www.klh-dev.com/lehava/lehava/system/mlogin.php")) {
                        mDrawerList.setItemChecked(0, true);
                        getActivity().getActionBar().setTitle("התחברות");
                    } else if (weburl.equals("http://www.klh-dev.com/lehava/lehava/system/mlogin.php?log=1")) {
                        mDrawerList.setItemChecked(0, true);
                        getActivity().getActionBar().setTitle("התחברות");
                    } else if (weburl.equals("http://www.klh-dev.com/lehava/lehava/system/mtimecounter.php")) {
                        mDrawerList.setItemChecked(1, true);
                        getActivity().getActionBar().setTitle("כניסה/יציאה");
                    } else if (weburl.equals("http://www.klh-dev.com/lehava/lehava/system/madd.php")) {
                        mDrawerList.setItemChecked(2, true);
                        getActivity().getActionBar().setTitle("הוספת אירוע");
                    } else if (weburl.equals("http://www.klh-dev.com/lehava/lehava/system/mlogin.php?log=1")) {
                        mDrawerList.setItemChecked(2, true);
                        getActivity().getActionBar().setTitle("התחברות");
                    }
                }
            });
            webview.getSettings().setJavaScriptEnabled(true);
            webview.getSettings().setUseWideViewPort(true);
            webview.setWebChromeClient(new WebChromeClient());
            webview.loadUrl("http://www.klh-dev.com/lehava/lehava/system/mlogout.php");


            return rootView;
        }
    }

    public static BasicCookieStore getCookieStore(String cookies, String domain) {
        String[] cookieValues = cookies.split(";");
        BasicCookieStore cs = new BasicCookieStore();

        BasicClientCookie cookie;
        for (int i = 0; i < cookieValues.length; i++) {
            String[] split = cookieValues[i].split("=");
            if (split.length == 2)
                cookie = new BasicClientCookie(split[0], split[1]);
            else
                cookie = new BasicClientCookie(split[0], null);

            cookie.setDomain(domain);
            cs.addCookie(cookie);
        }
        return cs;

    }



        public void UpdateMenu()
        {
            runOnUiThread(new Runnable()
            {
                public void run()
                {
                    if (isUserLoggedIn == null) {
                        isUserLoggedIn = IsLoggedIn();
                    }
                    int i;
                    SparseBooleanArray localSparseBooleanArray;
                    if (isUserLoggedIn.equals("0")) {
                        mPlanetTitles = mPlanetTitlesDisconnected;
                    }
                    i = mDrawerList.getCount();
                    localSparseBooleanArray = mDrawerList.getCheckedItemPositions();

                    for (int j = 0; j < i ; j++)
                    {
                        if (isUserLoggedIn.equals("1")) {
                            mPlanetTitles = mPlanetTitlesConnected;
                        }
                        mDrawerList.setAdapter(new ArrayAdapter(instance, R.layout.drawer_list_item, mPlanetTitles));
                        mDrawerList.setItemChecked(checked, true);
                        if (localSparseBooleanArray.get(j)) {
                            checked = j;
                        }
                    }
                }
            });
        }
        public void showToast(final String toast)
        {
            runOnUiThread(new Runnable() {
                public void run()
                {
                    Toast.makeText(instance, toast, Toast.LENGTH_SHORT).show();
                }
            });
        }

        public static String IsLoggedIn()
        {
            new Thread(new Runnable()
            {
                public void run()
                {
                    BasicCookieStore localBasicCookieStore = getCookieStore(CookieManager.getInstance().getCookie(getUrl), "klh-dev.com");
                    BasicHttpContext localBasicHttpContext = new BasicHttpContext();
                    DefaultHttpClient localDefaultHttpClient = new DefaultHttpClient();
                    localDefaultHttpClient.setCookieStore(localBasicCookieStore);
                    localBasicHttpContext.setAttribute("http.cookie-store", localBasicCookieStore);
                    HttpGet localHttpGet = new HttpGet("http://klh-dev.com/lehava/lehava/system/isloggedin.php");
                    try
                    {
                        result = localDefaultHttpClient.execute(localHttpGet, localBasicHttpContext);
                        response_str = EntityUtils.toString(result.getEntity());
                        System.out.println(response_str);
                        instance.UpdateMenu();
                        isUserLoggedIn = response_str;
                    }
                    catch (ClientProtocolException localClientProtocolException)
                    {
                            localClientProtocolException.printStackTrace();
                    }
                    catch (IOException localIOException)
                    {
                            localIOException.printStackTrace();
                    }
                }
            }).start();
            String str = response_str;
            isUserLoggedIn = str;
            return str;
        }
    }

Line 87:

mPlanetTitles = getResources().getStringArray(R.array.planets_array);

strings.xml:

<resources>
    <string name="app_name">Lehava</string>
    <string-array name="planets_array">
        <item>login</item>
        <item>about</item>
        <item>start shift</item>
        <item>add event</item>
        <item>logout</item>
    </string-array>
    <string-array name="mPlanetTitlesDisconnected">
        <item>login</item>
        <item>about</item>
    </string-array>
    <string-array name="mPlanetTitlesConnected">
        <item>start shift</item>
        <item>add event</item>
        <item>about</item>
        <item>logout</item>
    </string-array>
    <string name="drawer_open">Open navigation drawer</string>
    <string name="drawer_close">Close navigation drawer</string>
    <string name="action_websearch">Web search</string>
</resources>

I have tried to create a resource named res and use getResources() instead and it didn't work. this is what I have tried:

Resources res = getResources();
mPlanetTitles = res.getStringArray(R.array.planets_array);

解决方案

Make sure you don't have variants of the values resources, with the string array defined only for a subset of the variants. For example:

values-v21/strings.xml - defined
values/strings.xml - not defined

If the resource is present in at least one variant, you get the entry in R and can refer to it in code, but the runtime resource file variant does not necessarily have the resource.

这篇关于android.content.res.Resources $ NotFoundException:String数组资源ID#0x7f070002的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
相关文章
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆