android.content.res.Resources $ NotFoundException:String数组资源ID#0x7f070002 [英] android.content.res.Resources$NotFoundException: String array resource 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屋!