From b56ba9eea5d9957584d508c70441be013f69fcf8 Mon Sep 17 00:00:00 2001 From: huangshaohua Date: Tue, 13 Jun 2017 12:44:18 +0800 Subject: [PATCH 01/19] =?UTF-8?q?=E4=BF=AE=E5=A4=8D=E4=BA=861.4dev?= =?UTF-8?q?=E7=89=88=E6=9C=AC=E7=9A=84=E5=A4=9A=E5=9F=8E=E5=B8=82=E7=AE=A1?= =?UTF-8?q?=E7=90=86=E7=95=8C=E9=9D=A2=E6=B7=BB=E5=8A=A0=E5=9F=8E=E5=B8=82?= =?UTF-8?q?=E7=9A=84=E8=BE=93=E5=85=A5=E5=9F=8E=E5=B8=82=E6=93=8D=E4=BD=9C?= =?UTF-8?q?=E5=B4=A9=E6=BA=83=E7=9A=84BUG?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../owen/weathergo/activity/MultiCitiesManagerActivity.java | 2 ++ 1 file changed, 2 insertions(+) diff --git a/app/src/main/java/com/example/owen/weathergo/activity/MultiCitiesManagerActivity.java b/app/src/main/java/com/example/owen/weathergo/activity/MultiCitiesManagerActivity.java index 711bfe2..466b9d5 100644 --- a/app/src/main/java/com/example/owen/weathergo/activity/MultiCitiesManagerActivity.java +++ b/app/src/main/java/com/example/owen/weathergo/activity/MultiCitiesManagerActivity.java @@ -135,6 +135,7 @@ public void onYesClick() { addData = false; } if (addData) { + DBManager.getInstance().openDatabase(DBManager.WEATHER_DB_NAME); values.put("city", dialog2.mCityEdit.getText().toString()); final SQLiteDatabase db = DBManager.getInstance().getDatabase(); db.insert("MultiCities", null, values); @@ -145,6 +146,7 @@ public void onYesClick() { } } dialog2.dismiss(); + DBManager.getInstance().closeDatabase(); } }); dialog2.setNoOnclickListener("取消", new CityDialog.onNoOnclickListener() { From fd8d58e9120e9dc9ed61c0b77eb0adfa68836a4a Mon Sep 17 00:00:00 2001 From: huangshaohua Date: Tue, 13 Jun 2017 13:44:06 +0800 Subject: [PATCH 02/19] =?UTF-8?q?=E4=BF=AE=E5=A4=8D=E4=BA=86=E5=86=8D?= =?UTF-8?q?=E4=BD=8E=E7=89=88=E6=9C=AC=EF=BC=88api19=EF=BC=89=E4=B8=AD?= =?UTF-8?q?=E5=87=BA=E7=8E=B0=E7=9A=84=E5=A4=9A=E5=9F=8E=E5=B8=82=E7=AE=A1?= =?UTF-8?q?=E7=90=86=E9=80=89=E6=8B=A9=E5=9F=8E=E5=B8=82=E6=93=8D=E4=BD=9C?= =?UTF-8?q?=E4=B8=8D=E8=83=BD=E6=88=90=E5=8A=9F=E5=9B=9E=E8=B0=83=E7=9A=84?= =?UTF-8?q?BUG=20https://stackoverflow.com/questions/15689404/onactivityre?= =?UTF-8?q?sult-method-not-being-called-android?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/src/main/AndroidManifest.xml | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index f376a51..c763abf 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -48,8 +48,7 @@ android:name=".activity.SettingsActivity" android:launchMode="singleTask" /> Date: Thu, 15 Jun 2017 20:25:02 +0800 Subject: [PATCH 03/19] =?UTF-8?q?=E6=9C=80=E8=BF=91=E6=93=8D=E4=BD=9C?= =?UTF-8?q?=E5=95=8A?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../activity/ChoiceCityActivity.java | 3 +- .../activity/MultiCitiesManagerActivity.java | 7 +- .../owen/weathergo/activity/WeatherMain.java | 65 ++++++--- .../modules/fragment/MainFragment.java | 57 +++++--- .../modules/fragment/MultiCityFragment.java | 129 ++++++++++++------ 5 files changed, 172 insertions(+), 89 deletions(-) diff --git a/app/src/main/java/com/example/owen/weathergo/activity/ChoiceCityActivity.java b/app/src/main/java/com/example/owen/weathergo/activity/ChoiceCityActivity.java index 1da8acc..540ed9d 100644 --- a/app/src/main/java/com/example/owen/weathergo/activity/ChoiceCityActivity.java +++ b/app/src/main/java/com/example/owen/weathergo/activity/ChoiceCityActivity.java @@ -8,7 +8,6 @@ import android.support.v7.app.AppCompatActivity; import android.support.v7.widget.LinearLayoutManager; import android.support.v7.widget.RecyclerView; -import android.util.Log; import android.view.View; import com.example.owen.weathergo.R; @@ -83,7 +82,7 @@ public void onItemClick(View view, int pos) { } else if (currentLevel == LEVEL_CITY) { selectedCity = cityList.get(pos); if ("select_multi_city".equals(what_to_do)) { - Log.d("ChoiceCityActivityhuang", " onclick " + selectedCity.getCityName()); +// Log.d("ChoiceCityActivityhuang", " onclick " + selectedCity.getCityName()); Intent intent = new Intent(); intent.putExtra("select_multi_city", selectedCity.getCityName()); setResult(RESULT_OK, intent); diff --git a/app/src/main/java/com/example/owen/weathergo/activity/MultiCitiesManagerActivity.java b/app/src/main/java/com/example/owen/weathergo/activity/MultiCitiesManagerActivity.java index 466b9d5..1b7b462 100644 --- a/app/src/main/java/com/example/owen/weathergo/activity/MultiCitiesManagerActivity.java +++ b/app/src/main/java/com/example/owen/weathergo/activity/MultiCitiesManagerActivity.java @@ -12,7 +12,6 @@ import android.support.v7.app.AppCompatActivity; import android.support.v7.widget.LinearLayoutManager; import android.support.v7.widget.RecyclerView; -import android.util.Log; import android.view.View; import com.example.owen.weathergo.R; @@ -169,7 +168,7 @@ public void onNoClick() { } else { Intent intent = new Intent(MultiCitiesManagerActivity.this, WeatherMain.class); intent.putExtra("city_num", pos); - Log.d("MultiCitiesManagerActivityhuang startActivity ", " pos " + pos); +// Log.d("MultiCitiesManagerActivityhuang startActivity ", " pos " + pos); startActivity(intent); // quit(); // ToastUtil.showShort("dianjil" + cityList.get(pos)); @@ -202,8 +201,8 @@ protected void onActivityResult(int requestCode, int resultCode, Intent data) { if (resultCode == RESULT_OK) { Boolean addData = true; mResultCity = data.getStringExtra("select_multi_city"); - Log.d("MultiCitiesManagerActivityhuang", " onActivityResult " - + mResultCity); +// Log.d("MultiCitiesManagerActivityhuang", " onActivityResult " +// + mResultCity); if (!"".equals(mResultCity) && mResultCity != null) { DBManager.getInstance().openDatabase(DBManager.WEATHER_DB_NAME); final ContentValues values = new ContentValues(); diff --git a/app/src/main/java/com/example/owen/weathergo/activity/WeatherMain.java b/app/src/main/java/com/example/owen/weathergo/activity/WeatherMain.java index d280ff2..f349fd7 100644 --- a/app/src/main/java/com/example/owen/weathergo/activity/WeatherMain.java +++ b/app/src/main/java/com/example/owen/weathergo/activity/WeatherMain.java @@ -1,6 +1,5 @@ package com.example.owen.weathergo.activity; -import android.content.ContentValues; import android.content.Context; import android.content.Intent; import android.content.pm.PackageManager; @@ -23,6 +22,7 @@ import android.support.v7.app.ActionBarDrawerToggle; import android.support.v7.app.AppCompatActivity; import android.support.v7.widget.Toolbar; +//import android.util.Log; import android.util.Log; import android.view.Menu; import android.view.MenuInflater; @@ -39,7 +39,6 @@ import com.example.owen.weathergo.common.DoubleClickExit; import com.example.owen.weathergo.dialog.CityDialog; import com.example.owen.weathergo.modules.adapter.HomePagerAdapter; -import com.example.owen.weathergo.modules.domain.Weather; import com.example.owen.weathergo.modules.fragment.MainFragment; import com.example.owen.weathergo.modules.fragment.MultiCityFragment; import com.example.owen.weathergo.util.DBManager; @@ -65,9 +64,14 @@ public class WeatherMain extends AppCompatActivity private static final int SEARCH_CITY = 1; private static final int SCREEN_SHOOT = 2; - private static String Tag_CITY_0 = "main_fragment"; - private static String Tag_CITY_1 = "city_1_fragment"; - private static String Tag_CITY_2 = "city_2_fragment "; + private static String mThisPage; + + private static final String Tag_CITY_0 = "city_0_fragment"; + private static final String Tag_CITY_1 = "city_1_fragment"; + private static final String Tag_CITY_2 = "city_2_fragment"; + private static final String Tag_CITY_3 = "city_3_fragment"; + private static final String Tag_CITY_4 = "city_4_fragment"; + private static final String Tag_CITY_5 = "city_5_fragment"; public LocationClient mLocationClient; ArrayList cityList = new ArrayList<>(); @@ -137,11 +141,11 @@ protected void onStart() { cursor.close(); int mCityCount = (int) DBManager.getInstance().allCaseNum("MultiCities"); DBManager.getInstance().closeDatabase(); - Log.d("WeatherMainhuang", " onStart count " + mCityCount); +// Log.d("WeatherMainhuang", " onStart count " + mCityCount); if (mCityCount != 0) { for (int i = 0; i < mCityCount; i++) { MultiCityFragment mtf = MultiCityFragment.newInstance(i, cityList.get(i)); - Log.d("WeatherMainhuang", " onStart " + cityList.get(i)); + Log.d("WeatherMainhuang", " onStart " + i); mHomePagerAdapter.addTab(mtf, cityList.get(i)); } } @@ -149,7 +153,7 @@ protected void onStart() { if (mCityCount != 0) { mTabLayout.setupWithViewPager(mViewPager, false); } - Log.d("WeatherMainhuang", "onStart getIntExtra " + cityNum); +// Log.d("WeatherMainhuang", "onStart getIntExtra " + cityNum); } mViewPager.setCurrentItem(cityNum + 1); super.onStart();//将super.onStart();移动到刷新操作之后再从多城市管理点击跳转就不崩溃了 @@ -189,14 +193,36 @@ public void onClick(View v) { mViewPager.addOnPageChangeListener(new ViewPager.SimpleOnPageChangeListener() { @Override public void onPageSelected(int position) { + switch (position) { + //通过当前Fragment决定搜索或选择城市时在哪个位置更改 + case 0: + mThisPage = Tag_CITY_0; + break; + case 1: + mThisPage = Tag_CITY_1; + break; + case 2: + mThisPage = Tag_CITY_2; + break; + case 3: + mThisPage = Tag_CITY_3; + break; + case 4: + mThisPage = Tag_CITY_4; + break; + case 5: + mThisPage = Tag_CITY_5; + break; + default: + } + Log.d("WeatherMainhuang ", " pagechange " + mThisPage); String titleStr; - if (position == 0) + if (position == 0) { titleStr = SharedPreferenceUtil.getInstance().getCityName(); - else + } else { titleStr = cityList.get(position - 1); + } safeSetTitle(titleStr); -// ToastUtil.showShort(""+position); -// super.onPageSelected(position); } }); } @@ -234,6 +260,9 @@ public void onYesClick() { Message msg = new Message(); msg.obj = dialog.mCityEdit.getText().toString(); msg.what = SEARCH_CITY; + Bundle bundle = new Bundle(); + bundle.putString("which_page", mThisPage);//用来判断当前Fragment页面的参数;用来进一步决定更改哪个城市 + msg.setData(bundle); mHandler.sendMessage(msg); dialog.dismiss(); } @@ -295,12 +324,12 @@ protected void onActivityResult(int requestCode, int resultCode, Intent data) { cursor.close(); int mCityCount = (int) DBManager.getInstance().allCaseNum("MultiCities"); DBManager.getInstance().closeDatabase(); - Log.d("WeatherMainhuang", " onActivityResult count " + mCityCount); +// Log.d("WeatherMainhuang", " onActivityResult count " + mCityCount); if (mCityCount != 0) { for (int i = 0; i < mCityCount; i++) { // for (int i = 0; i < 2; i++) { MultiCityFragment mtf = MultiCityFragment.newInstance(i, cityList.get(i)); - Log.d("WeatherMainhuang", " onActivityResult " + cityList.get(i)); +// Log.d("WeatherMainhuang", " onActivityResult " + cityList.get(i)); mHomePagerAdapter.addTab(mtf, cityList.get(i)); // mHomePagerAdapter.notifyDataSetChanged(); } @@ -367,7 +396,7 @@ public void init() { for (int i = 0; i < mCityCount; i++) { // for (int i = 0; i < 2; i++) { MultiCityFragment mtf = MultiCityFragment.newInstance(i, cityList.get(i)); - Log.d("WeatherMainhuang", " init " + cityList.get(i)); +// Log.d("WeatherMainhuang", " init " + cityList.get(i)); mHomePagerAdapter.addTab(mtf, cityList.get(i)); // mHomePagerAdapter.notifyDataSetChanged(); } @@ -381,10 +410,10 @@ public void init() { mTabLayout.setupWithViewPager(mViewPager, false); } String cCity = SharedPreferenceUtil.getInstance().getCityName(); - Log.d("WeatherMainhuang", " init " + cCity); +// Log.d("WeatherMainhuang", " init " + cCity); if ("".equals(cCity) || cCity == null)//判断SharedPreference中存储的是否为空,即如果第一次执行程序不会变为空值进行初始赋值 { - Log.d("WeatherMainhuang", " initLocation " + cCity); +// Log.d("WeatherMainhuang", " initLocation " + cCity); initLocation(); } } @@ -538,7 +567,7 @@ public void onReceiveLocation(BDLocation bdLocation) { Message msg = new Message(); msg.obj = bdLocation.getCity() + ""; msg.what = SEARCH_CITY; - Log.d("search_weather_data", "" + bdLocation.getCity()); +// Log.d("search_weather_data", "" + bdLocation.getCity()); mHandler.sendMessage(msg); } } diff --git a/app/src/main/java/com/example/owen/weathergo/modules/fragment/MainFragment.java b/app/src/main/java/com/example/owen/weathergo/modules/fragment/MainFragment.java index 323d530..b8677e8 100644 --- a/app/src/main/java/com/example/owen/weathergo/modules/fragment/MainFragment.java +++ b/app/src/main/java/com/example/owen/weathergo/modules/fragment/MainFragment.java @@ -42,6 +42,7 @@ public class MainFragment extends Fragment { + private static final String Tag_CITY_0 = "city_0_fragment"; private static final int UPDATE_WEATHER_DATA = 0; private static final int SEARCH_CITY = 1; private static final int SCREEN_SHOOT = 2; @@ -84,27 +85,31 @@ public void handleMessage(Message msg) { mNoData.setVisibility(View.GONE); refresh(); } + break; case SEARCH_CITY: - //Fragment与activity交互http://blog.csdn.net/huangyabin001/article/details/35231753 - if (!msg.obj.toString().equals("")) { - mCityStr = msg.obj.toString(); - SharedPreferenceUtil.getInstance().setCityName(mCityStr); - new Thread(new Runnable() { - @Override - public void run() { - mWeather = JSONUtil.getInstance().getWeather(getActivity(), mCityStr); - Message message = new Message(); - message.what = UPDATE_WEATHER_DATA; - mHandler.sendMessage(message); - } - }).start(); - } else { - Message message = new Message(); - message.what = CHANGE_TEXT; - message.obj = "no_city_data"; - mHandler.sendMessage(message); - //请手动选择城市 + if (msg.getData().getString("which_page").equals(Tag_CITY_0)) { + Log.d("MainFragmenthuang", " SEARCH_CITY " + msg.getData().getString("which_page")); + //Fragment与activity交互http://blog.csdn.net/huangyabin001/article/details/35231753 + if (!msg.obj.toString().equals("")) { + mCityStr = msg.obj.toString(); + SharedPreferenceUtil.getInstance().setCityName(mCityStr); + new Thread(new Runnable() { + @Override + public void run() { + mWeather = JSONUtil.getInstance().getWeather(getActivity(), mCityStr); + Message message = new Message(); + message.what = UPDATE_WEATHER_DATA; + mHandler.sendMessage(message); + } + }).start(); + } else { + Message message = new Message(); + message.what = CHANGE_TEXT; + message.obj = "no_city_data"; + mHandler.sendMessage(message); + //请手动选择城市 + } } break; case SCREEN_SHOOT: @@ -136,12 +141,24 @@ public void onCreate(@Nullable Bundle savedInstanceState) { mToastSuccess = 0; } + //此Fragment是否可见 @Override + public void setUserVisibleHint(boolean isVisibleToUser) { + if (isVisibleToUser && isVisible()) { +// initData(); + mActivity = (WeatherMain) getActivity(); + mActivity.setHandler(mHandler); + + } + super.setUserVisibleHint(isVisibleToUser); + } + + /*@Override public void onAttach(Activity activity) { super.onAttach(activity); mActivity = (WeatherMain) activity; mActivity.setHandler(mHandler); - } + }*/ //@Nullable 表示定义的字段可以为空. @RequiresApi(api = Build.VERSION_CODES.KITKAT) diff --git a/app/src/main/java/com/example/owen/weathergo/modules/fragment/MultiCityFragment.java b/app/src/main/java/com/example/owen/weathergo/modules/fragment/MultiCityFragment.java index 3201c49..84074fa 100644 --- a/app/src/main/java/com/example/owen/weathergo/modules/fragment/MultiCityFragment.java +++ b/app/src/main/java/com/example/owen/weathergo/modules/fragment/MultiCityFragment.java @@ -1,6 +1,5 @@ package com.example.owen.weathergo.modules.fragment; -import android.app.Activity; import android.content.ContentValues; import android.database.Cursor; import android.database.sqlite.SQLiteDatabase; @@ -51,12 +50,13 @@ public class MultiCityFragment extends Fragment { private static final int SCREEN_SHOOT = 2; private static final int CHANGE_TEXT = 3; - // private static final int CITY_NUM_0 = 0;//主城市 - private static final int CITY_NUM_1 = 1;//多城市1 - private static final int CITY_NUM_2 = 2;//多城市2 - private static final int CITY_NUM_3 = 3;//多城市3 - private static final int CITY_NUM_4 = 4;//多城市4 - private static final int CITY_NUM_5 = 5;//多城市5 + private static String mThisPage; + + private static final String Tag_CITY_1 = "city_1_fragment"; + private static final String Tag_CITY_2 = "city_2_fragment"; + private static final String Tag_CITY_3 = "city_3_fragment"; + private static final String Tag_CITY_4 = "city_4_fragment"; + private static final String Tag_CITY_5 = "city_5_fragment"; @BindView(R.id.no_city_data) TextView mNoCityData; @@ -92,29 +92,34 @@ public void handleMessage(Message msg) { refresh(); } break; + case SEARCH_CITY: + Log.d("MultiCityFragmenthuang", " SEARCH_CITY -1 " + mThisPage + mCityStr + "\n" + + msg.getData().getString("which_page")); //Fragment与activity交互http://blog.csdn.net/huangyabin001/article/details/35231753 if (!msg.obj.toString().equals("")) { - mCityStr = msg.obj.toString(); - DBManager.getInstance().openDatabase(DBManager.WEATHER_DB_NAME); - final SQLiteDatabase db = DBManager.getInstance().getDatabase(); - Cursor cursor = db.rawQuery("select city from MultiCities", null); - - ArrayList cityList = new ArrayList<>(); - if (cursor.moveToFirst()) { - do { - //遍历cursor - String city = cursor.getString(cursor.getColumnIndex("city")); - cityList.add(city); - } while (cursor.moveToNext()); - } - cursor.close(); - String Ccity = cityList.get(mCityNum); - ContentValues values = new ContentValues(); - values.put("city", mCityStr); - db.update("MultiCities", values, "city = ?", new String[]{ - Ccity - }); + if (mThisPage.equals(msg.getData().getString("which_page"))) { + Log.d("MultiCityFragmenthuang", " SEARCH_CITY " + msg.getData().getString("which_page")); + mCityStr = msg.obj.toString(); + DBManager.getInstance().openDatabase(DBManager.WEATHER_DB_NAME); + final SQLiteDatabase db = DBManager.getInstance().getDatabase(); + Cursor cursor = db.rawQuery("select city from MultiCities", null); + + ArrayList cityList = new ArrayList<>(); + if (cursor.moveToFirst()) { + do { + //遍历cursor + String city = cursor.getString(cursor.getColumnIndex("city")); + cityList.add(city); + } while (cursor.moveToNext()); + } + cursor.close(); + String Ccity = cityList.get(mCityNum); + ContentValues values = new ContentValues(); + values.put("city", mCityStr); + db.update("MultiCities", values, "city = ?", new String[]{ + Ccity + }); /*switch (mCityNum + 1) { case CITY_NUM_1: @@ -134,21 +139,22 @@ public void handleMessage(Message msg) { break; }*/ // SharedPreferenceUtil.getInstance().putString("city_1", mCityStr); - new Thread(new Runnable() { - @Override - public void run() { - mWeather = JSONUtil.getInstance().getWeather(getActivity(), mCityStr, mCityNum + 1); - Message message = new Message(); - message.what = UPDATE_WEATHER_DATA; - mHandler.sendMessage(message); - } - }).start(); - } else { - Message message = new Message(); - message.what = CHANGE_TEXT; - message.obj = "no_city_data"; - mHandler.sendMessage(message); - //请手动选择城市 + new Thread(new Runnable() { + @Override + public void run() { + mWeather = JSONUtil.getInstance().getWeather(getActivity(), mCityStr, mCityNum + 1); + Message message = new Message(); + message.what = UPDATE_WEATHER_DATA; + mHandler.sendMessage(message); + } + }).start(); + } else { + Message message = new Message(); + message.what = CHANGE_TEXT; + message.obj = "no_city_data"; + mHandler.sendMessage(message); + //请手动选择城市 + } } break; case SCREEN_SHOOT: @@ -191,17 +197,50 @@ public void onCreate(@Nullable Bundle savedInstanceState) { Bundle args = getArguments(); if (args != null) { this.mCityNum = args.getInt("city_num"); + Log.d("MultiCityFragmenthuang", " onCreate mCityNum " + mCityNum); this.mCityStr = args.getString("city_str"); + Log.d("MultiCityFragmenthuang", " onCreate mCityStr " + mCityStr); + } + switch (mCityNum) { + //通过当前Fragment决定搜索或选择城市时在哪个位置更改 + case 0: + mThisPage = Tag_CITY_1; + break; + case 1: + mThisPage = Tag_CITY_2; + break; + case 2: + mThisPage = Tag_CITY_3; + break; + case 3: + mThisPage = Tag_CITY_4; + break; + case 4: + mThisPage = Tag_CITY_5; + break; + default: } Log.d("MultiCityFragmenthuang", " onCreate " + mCityStr + " " + mCityNum); } + //此Fragment是否可见 @Override + public void setUserVisibleHint(boolean isVisibleToUser) { + if (isVisibleToUser && isVisible()) { +// initData(); + mActivity = (WeatherMain) getActivity(); + mActivity.setHandler(mHandler); + + } + super.setUserVisibleHint(isVisibleToUser); + } + + /*@Override public void onAttach(Activity activity) { super.onAttach(activity); mActivity = (WeatherMain) activity; mActivity.setHandler(mHandler); - } + }*/ //@Nullable 表示定义的字段可以为空. @RequiresApi(api = Build.VERSION_CODES.KITKAT) @@ -453,9 +492,9 @@ public void getWeather() { int i = 0; mRecycleView.setAdapter(mWeatherAdapter = new WeatherAdapter(mWeather)); mGCityStr = mWeather.getBasic().getCity(); - if (!mGCityStr.equals("")) { + /*if (!mGCityStr.equals("")) { // safeSetTitle(mGCityStr); - } + }*/ /*Intent intent = new Intent(getActivity(), AutoUpdateService.class); getActivity().startService(intent);*/ } catch (Exception e) { From 04ac54fd1f55f0a272663e0c5f00e8ac63d39dfe Mon Sep 17 00:00:00 2001 From: huangshaohua Date: Fri, 16 Jun 2017 20:21:55 +0800 Subject: [PATCH 04/19] =?UTF-8?q?=E5=9F=8E=E5=B8=82=E9=80=89=E6=8B=A9?= =?UTF-8?q?=E7=BB=91=E5=AE=9A=E6=AF=8F=E4=B8=AAfragment?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../activity/ChoiceCityActivity.java | 83 +++++++++++++++++-- .../owen/weathergo/activity/WeatherMain.java | 76 +++++++++++++++-- .../modules/fragment/MainFragment.java | 13 ++- .../modules/fragment/MultiCityFragment.java | 9 +- 4 files changed, 163 insertions(+), 18 deletions(-) diff --git a/app/src/main/java/com/example/owen/weathergo/activity/ChoiceCityActivity.java b/app/src/main/java/com/example/owen/weathergo/activity/ChoiceCityActivity.java index 540ed9d..418537b 100644 --- a/app/src/main/java/com/example/owen/weathergo/activity/ChoiceCityActivity.java +++ b/app/src/main/java/com/example/owen/weathergo/activity/ChoiceCityActivity.java @@ -1,13 +1,17 @@ package com.example.owen.weathergo.activity; +import android.content.ContentValues; import android.content.Context; import android.content.Intent; +import android.database.Cursor; +import android.database.sqlite.SQLiteDatabase; import android.os.Build; import android.os.Bundle; import android.support.annotation.RequiresApi; import android.support.v7.app.AppCompatActivity; import android.support.v7.widget.LinearLayoutManager; import android.support.v7.widget.RecyclerView; +import android.util.Log; import android.view.View; import com.example.owen.weathergo.R; @@ -39,8 +43,16 @@ public class ChoiceCityActivity extends AppCompatActivity { public static final int LEVEL_PROVINCE = 0; public static final int LEVEL_CITY = 1; - private String what_to_do; + private String what_to_do;//从那个页面过来,多城市管理、主天气页面 + private String which_city = Tag_CITY_0; private int currentLevel; + private static final String Tag_CITY_0 = "city_0_fragment"; + private static final String Tag_CITY_1 = "city_1_fragment"; + private static final String Tag_CITY_2 = "city_2_fragment"; + private static final String Tag_CITY_3 = "city_3_fragment"; + private static final String Tag_CITY_4 = "city_4_fragment"; + private static final String Tag_CITY_5 = "city_5_fragment"; + // private boolean isChecked = false; @RequiresApi(api = Build.VERSION_CODES.JELLY_BEAN) @@ -59,6 +71,8 @@ protected void onStart() { super.onStart(); Intent intent = this.getIntent(); what_to_do = intent.getStringExtra("what_to_do"); + which_city = intent.getStringExtra("which_city"); + Log.d("ChoiceCityActivityhuang ", " onStart which_city : " + which_city); } private void init() { @@ -83,11 +97,70 @@ public void onItemClick(View view, int pos) { selectedCity = cityList.get(pos); if ("select_multi_city".equals(what_to_do)) { // Log.d("ChoiceCityActivityhuang", " onclick " + selectedCity.getCityName()); - Intent intent = new Intent(); + /*Intent intent = new Intent(); intent.putExtra("select_multi_city", selectedCity.getCityName()); - setResult(RESULT_OK, intent); - } else { - SharedPreferenceUtil.getInstance().setCityName(selectedCity.getCityName()); + setResult(RESULT_OK, intent);*/ + } else if (!"".equals(which_city)) { + Intent intent = new Intent(); + DBManager.getInstance().openDatabase(DBManager.WEATHER_DB_NAME); + final SQLiteDatabase db = DBManager.getInstance().getDatabase(); + Cursor cursor = db.rawQuery("select city from MultiCities", null); + ArrayList cityList = new ArrayList<>(); + if (cursor.moveToFirst()) { + do { + //遍历cursor + String city = cursor.getString(cursor.getColumnIndex("city")); + cityList.add(city); + } while (cursor.moveToNext()); + } + cursor.close(); + ContentValues values = new ContentValues(); + values.put("city", selectedCity.getCityName()); + if (which_city != null) + switch (which_city) { + case Tag_CITY_0: + SharedPreferenceUtil.getInstance() + .setCityName(selectedCity.getCityName()); + //城市0 主城市 +// intent.putExtra("which_page", 0); + break; + case Tag_CITY_1: +// String city = cityList.get(0); + db.update("MultiCities", values, "city = ?", new String[]{ + cityList.get(0) + }); +// intent.putExtra("which_page", 1); + break; + case Tag_CITY_2: + db.update("MultiCities", values, "city = ?", new String[]{ + cityList.get(1) + }); +// intent.putExtra("which_page", 2); +// String city = cityList.get(1); + break; + case Tag_CITY_3: + db.update("MultiCities", values, "city = ?", new String[]{ + cityList.get(2) + }); +// intent.putExtra("which_page", 3); + break; + case Tag_CITY_4: + db.update("MultiCities", values, "city = ?", new String[]{ + cityList.get(3) + }); +// intent.putExtra("which_page", 4); + break; + case Tag_CITY_5: + db.update("MultiCities", values, "city = ?", new String[]{ + cityList.get(4) + }); +// intent.putExtra("which_page", 5); + break; + default: + } +// setResult(RESULT_OK, intent); + DBManager.getInstance().closeDatabase(); + } // finish(); quit(); diff --git a/app/src/main/java/com/example/owen/weathergo/activity/WeatherMain.java b/app/src/main/java/com/example/owen/weathergo/activity/WeatherMain.java index f349fd7..1d85d8d 100644 --- a/app/src/main/java/com/example/owen/weathergo/activity/WeatherMain.java +++ b/app/src/main/java/com/example/owen/weathergo/activity/WeatherMain.java @@ -73,6 +73,9 @@ public class WeatherMain extends AppCompatActivity private static final String Tag_CITY_4 = "city_4_fragment"; private static final String Tag_CITY_5 = "city_5_fragment"; + MultiCityFragment[] mFt; + MainFragment mF; + public LocationClient mLocationClient; ArrayList cityList = new ArrayList<>(); @@ -125,8 +128,9 @@ protected void onStart() { //如果在MultiCitiesManagerActivity中没有返回而是点击了其中一个城市进行跳转 //就不会出发回调函数; mHomePagerAdapter = new HomePagerAdapter(getSupportFragmentManager()); - MainFragment mf = new MainFragment(); - mHomePagerAdapter.addTab(mf, SharedPreferenceUtil.getInstance().getCityName()); +// MainFragment mf = new MainFragment(); + mF = new MainFragment(); + mHomePagerAdapter.addTab(mF, SharedPreferenceUtil.getInstance().getCityName()); cityList.clear(); DBManager.getInstance().openDatabase(DBManager.WEATHER_DB_NAME); final SQLiteDatabase db = DBManager.getInstance().getDatabase(); @@ -144,9 +148,12 @@ protected void onStart() { // Log.d("WeatherMainhuang", " onStart count " + mCityCount); if (mCityCount != 0) { for (int i = 0; i < mCityCount; i++) { - MultiCityFragment mtf = MultiCityFragment.newInstance(i, cityList.get(i)); +// MultiCityFragment mtf = MultiCityFragment.newInstance(i, cityList.get(i)); + mFt[i] = MultiCityFragment.newInstance(i, cityList.get(i)); Log.d("WeatherMainhuang", " onStart " + i); - mHomePagerAdapter.addTab(mtf, cityList.get(i)); +// mHomePagerAdapter.addTab(mtf, cityList.get(i)); + mHomePagerAdapter.addTab(mFt[i], cityList.get(i)); + } } mViewPager.setAdapter(mHomePagerAdapter); @@ -197,21 +204,33 @@ public void onPageSelected(int position) { //通过当前Fragment决定搜索或选择城市时在哪个位置更改 case 0: mThisPage = Tag_CITY_0; + if (mF != null) + mF.onAttach(WeatherMain.this); break; case 1: mThisPage = Tag_CITY_1; + if (mFt != null) + mFt[0].onAttach(WeatherMain.this); break; case 2: mThisPage = Tag_CITY_2; + if (mFt != null) + mFt[1].onAttach(WeatherMain.this); break; case 3: mThisPage = Tag_CITY_3; + if (mFt != null) + mFt[2].onAttach(WeatherMain.this); break; case 4: mThisPage = Tag_CITY_4; + if (mFt != null) + mFt[3].onAttach(WeatherMain.this); break; case 5: mThisPage = Tag_CITY_5; + if (mFt != null) + mFt[4].onAttach(WeatherMain.this); break; default: } @@ -345,6 +364,48 @@ protected void onActivityResult(int requestCode, int resultCode, Intent data) { } } break; + case 3: + if (resultCode == RESULT_OK) { + mHomePagerAdapter = new HomePagerAdapter(getSupportFragmentManager()); + MainFragment mf = new MainFragment(); + mHomePagerAdapter.addTab(mf, SharedPreferenceUtil.getInstance().getCityName()); +// mViewPager.removeAllViews(); + cityList.clear(); + DBManager.getInstance().openDatabase(DBManager.WEATHER_DB_NAME); + final SQLiteDatabase db = DBManager.getInstance().getDatabase(); + Cursor cursor = db.rawQuery("select city from MultiCities", null); + if (cursor.moveToFirst()) { + do { + //遍历cursor + String city = cursor.getString(cursor.getColumnIndex("city")); + cityList.add(city); + } while (cursor.moveToNext()); + } + cursor.close(); + int mCityCount = (int) DBManager.getInstance().allCaseNum("MultiCities"); + DBManager.getInstance().closeDatabase(); +// Log.d("WeatherMainhuang", " onActivityResult count " + mCityCount); + if (mCityCount != 0) { + for (int i = 0; i < mCityCount; i++) { +// for (int i = 0; i < 2; i++) { + MultiCityFragment mtf = MultiCityFragment.newInstance(i, cityList.get(i)); +// Log.d("WeatherMainhuang", " onActivityResult " + cityList.get(i)); + mHomePagerAdapter.addTab(mtf, cityList.get(i)); +// mHomePagerAdapter.notifyDataSetChanged(); + } + } + /*if (!"".equals(SharedPreferenceUtil.getInstance().getString("city_1", ""))) { + MultiCityFragment tf = new MultiCityFragment(); + mHomePagerAdapter.addTab(tf, ""); + }*/ +// mHomePagerAdapter.notifyDataSetChanged(); + mViewPager.setAdapter(mHomePagerAdapter); + if (mCityCount != 0) { + mTabLayout.setupWithViewPager(mViewPager, false); + } + } + mViewPager.setCurrentItem(data.getIntExtra("which_page", 0)); + break; default: break; } @@ -513,7 +574,12 @@ public void initNavigationView() { public boolean onNavigationItemSelected(@NonNull MenuItem item) { switch (item.getItemId()) { case R.id.nav_city: - ChoiceCityActivity.launch(WeatherMain.this); + Intent intent = new Intent(); + intent.setClass(WeatherMain.this, ChoiceCityActivity.class); + intent.putExtra("which_city", mThisPage); + startActivity(intent); +// startActivityForResult(intent, 3); +// ChoiceCityActivity.launch(WeatherMain.this); break; case R.id.nav_edit_city: toSearchDialog(); diff --git a/app/src/main/java/com/example/owen/weathergo/modules/fragment/MainFragment.java b/app/src/main/java/com/example/owen/weathergo/modules/fragment/MainFragment.java index b8677e8..f5a0d5b 100644 --- a/app/src/main/java/com/example/owen/weathergo/modules/fragment/MainFragment.java +++ b/app/src/main/java/com/example/owen/weathergo/modules/fragment/MainFragment.java @@ -146,19 +146,19 @@ public void onCreate(@Nullable Bundle savedInstanceState) { public void setUserVisibleHint(boolean isVisibleToUser) { if (isVisibleToUser && isVisible()) { // initData(); - mActivity = (WeatherMain) getActivity(); - mActivity.setHandler(mHandler); + /*mActivity = (WeatherMain) getActivity(); + mActivity.setHandler(mHandler);*/ } super.setUserVisibleHint(isVisibleToUser); } - /*@Override + @Override public void onAttach(Activity activity) { super.onAttach(activity); mActivity = (WeatherMain) activity; mActivity.setHandler(mHandler); - }*/ + } //@Nullable 表示定义的字段可以为空. @RequiresApi(api = Build.VERSION_CODES.KITKAT) @@ -216,6 +216,11 @@ public void run() { } } + @Override + public void onResume() { + super.onResume(); + } + @Override public void onDestroy() { super.onDestroy(); diff --git a/app/src/main/java/com/example/owen/weathergo/modules/fragment/MultiCityFragment.java b/app/src/main/java/com/example/owen/weathergo/modules/fragment/MultiCityFragment.java index 84074fa..db3e0de 100644 --- a/app/src/main/java/com/example/owen/weathergo/modules/fragment/MultiCityFragment.java +++ b/app/src/main/java/com/example/owen/weathergo/modules/fragment/MultiCityFragment.java @@ -1,5 +1,6 @@ package com.example.owen.weathergo.modules.fragment; +import android.app.Activity; import android.content.ContentValues; import android.database.Cursor; import android.database.sqlite.SQLiteDatabase; @@ -228,19 +229,19 @@ public void onCreate(@Nullable Bundle savedInstanceState) { public void setUserVisibleHint(boolean isVisibleToUser) { if (isVisibleToUser && isVisible()) { // initData(); - mActivity = (WeatherMain) getActivity(); - mActivity.setHandler(mHandler); + /*mActivity = (WeatherMain) getActivity(); + mActivity.setHandler(mHandler);*/ } super.setUserVisibleHint(isVisibleToUser); } - /*@Override + @Override public void onAttach(Activity activity) { super.onAttach(activity); mActivity = (WeatherMain) activity; mActivity.setHandler(mHandler); - }*/ + } //@Nullable 表示定义的字段可以为空. @RequiresApi(api = Build.VERSION_CODES.KITKAT) From dd5609cd07a5d0a923f44ed49f24e9ffbe04b91e Mon Sep 17 00:00:00 2001 From: huangshaohua Date: Fri, 16 Jun 2017 20:46:54 +0800 Subject: [PATCH 05/19] =?UTF-8?q?=E4=BF=AE=E5=A4=8Dcity=5F0=E6=97=A0?= =?UTF-8?q?=E4=BF=A1=E6=81=AF=E7=9A=84bug?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../example/owen/weathergo/activity/ChoiceCityActivity.java | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/app/src/main/java/com/example/owen/weathergo/activity/ChoiceCityActivity.java b/app/src/main/java/com/example/owen/weathergo/activity/ChoiceCityActivity.java index 418537b..b12ae77 100644 --- a/app/src/main/java/com/example/owen/weathergo/activity/ChoiceCityActivity.java +++ b/app/src/main/java/com/example/owen/weathergo/activity/ChoiceCityActivity.java @@ -44,7 +44,7 @@ public class ChoiceCityActivity extends AppCompatActivity { public static final int LEVEL_PROVINCE = 0; public static final int LEVEL_CITY = 1; private String what_to_do;//从那个页面过来,多城市管理、主天气页面 - private String which_city = Tag_CITY_0; + private String which_city; private int currentLevel; private static final String Tag_CITY_0 = "city_0_fragment"; private static final String Tag_CITY_1 = "city_1_fragment"; @@ -71,7 +71,9 @@ protected void onStart() { super.onStart(); Intent intent = this.getIntent(); what_to_do = intent.getStringExtra("what_to_do"); - which_city = intent.getStringExtra("which_city"); + which_city = ("".equals(intent.getStringExtra("which_city")) + || intent.getStringExtra("which_city") == null) + ? Tag_CITY_0 : intent.getStringExtra("which_city"); Log.d("ChoiceCityActivityhuang ", " onStart which_city : " + which_city); } From c53a8002b44314e7a9b6c9f880b96a97db73e339 Mon Sep 17 00:00:00 2001 From: huangshaohua Date: Fri, 16 Jun 2017 21:09:45 +0800 Subject: [PATCH 06/19] =?UTF-8?q?=E5=AE=8C=E6=88=90=E6=9B=B4=E6=94=B9?= =?UTF-8?q?=E5=9F=8E=E5=B8=82=E5=90=8E=E7=9A=84title=E7=9A=84=E5=88=B7?= =?UTF-8?q?=E6=96=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../example/owen/weathergo/activity/WeatherMain.java | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/app/src/main/java/com/example/owen/weathergo/activity/WeatherMain.java b/app/src/main/java/com/example/owen/weathergo/activity/WeatherMain.java index 1d85d8d..43db831 100644 --- a/app/src/main/java/com/example/owen/weathergo/activity/WeatherMain.java +++ b/app/src/main/java/com/example/owen/weathergo/activity/WeatherMain.java @@ -122,9 +122,9 @@ protected void onStart() { //如果是从多城市管理页面回来的话,则刷新页面 safeSetTitle(getResources().getString(R.string.app_name)); - //防止刷新后城市顺序混乱出现title错误的额现象 + //防止刷新后城市顺序混乱出现title错误的现象 int cityNum = getIntent().getIntExtra("city_num", -1); - if (cityNum != -1) { +// if (cityNum != -1) { //如果在MultiCitiesManagerActivity中没有返回而是点击了其中一个城市进行跳转 //就不会出发回调函数; mHomePagerAdapter = new HomePagerAdapter(getSupportFragmentManager()); @@ -149,13 +149,13 @@ protected void onStart() { if (mCityCount != 0) { for (int i = 0; i < mCityCount; i++) { // MultiCityFragment mtf = MultiCityFragment.newInstance(i, cityList.get(i)); - mFt[i] = MultiCityFragment.newInstance(i, cityList.get(i)); + MultiCityFragment mft = MultiCityFragment.newInstance(i, cityList.get(i)); Log.d("WeatherMainhuang", " onStart " + i); // mHomePagerAdapter.addTab(mtf, cityList.get(i)); - mHomePagerAdapter.addTab(mFt[i], cityList.get(i)); + mHomePagerAdapter.addTab(mft, cityList.get(i)); } - } +// } mViewPager.setAdapter(mHomePagerAdapter); if (mCityCount != 0) { mTabLayout.setupWithViewPager(mViewPager, false); From be0906fad0e789d6918a32be7192f7deef86ea70 Mon Sep 17 00:00:00 2001 From: huangshaohua Date: Fri, 16 Jun 2017 21:19:42 +0800 Subject: [PATCH 07/19] =?UTF-8?q?=E4=BF=AE=E5=A4=8D=E8=BF=87=E7=A8=8B?= =?UTF-8?q?=E4=B8=AD=E5=A4=9A=E5=9F=8E=E5=B8=82=E5=87=BA=E7=8E=B0=E7=9A=84?= =?UTF-8?q?=E6=97=A0=E6=B3=95=E6=B7=BB=E5=8A=A0=E5=9F=8E=E5=B8=82=E7=9A=84?= =?UTF-8?q?bug?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/src/main/AndroidManifest.xml | 1 - .../example/owen/weathergo/activity/ChoiceCityActivity.java | 5 +++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index c763abf..ddd3001 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -53,7 +53,6 @@ diff --git a/app/src/main/java/com/example/owen/weathergo/activity/ChoiceCityActivity.java b/app/src/main/java/com/example/owen/weathergo/activity/ChoiceCityActivity.java index b12ae77..238466c 100644 --- a/app/src/main/java/com/example/owen/weathergo/activity/ChoiceCityActivity.java +++ b/app/src/main/java/com/example/owen/weathergo/activity/ChoiceCityActivity.java @@ -75,6 +75,7 @@ protected void onStart() { || intent.getStringExtra("which_city") == null) ? Tag_CITY_0 : intent.getStringExtra("which_city"); Log.d("ChoiceCityActivityhuang ", " onStart which_city : " + which_city); + Log.d("ChoiceCityActivityhuang ", " onStart what_to_do : " + what_to_do); } private void init() { @@ -99,9 +100,9 @@ public void onItemClick(View view, int pos) { selectedCity = cityList.get(pos); if ("select_multi_city".equals(what_to_do)) { // Log.d("ChoiceCityActivityhuang", " onclick " + selectedCity.getCityName()); - /*Intent intent = new Intent(); + Intent intent = new Intent(); intent.putExtra("select_multi_city", selectedCity.getCityName()); - setResult(RESULT_OK, intent);*/ + setResult(RESULT_OK, intent); } else if (!"".equals(which_city)) { Intent intent = new Intent(); DBManager.getInstance().openDatabase(DBManager.WEATHER_DB_NAME); From 07691d5c2105bb853ff08409672857f2bf0d9e4d Mon Sep 17 00:00:00 2001 From: huangshaohua Date: Fri, 16 Jun 2017 23:01:29 +0800 Subject: [PATCH 08/19] =?UTF-8?q?=E5=AE=8C=E6=88=90=E5=9F=8E=E5=B8=82?= =?UTF-8?q?=E9=80=89=E6=8B=A9=E5=90=8E=EF=BC=8C=E8=BF=94=E5=9B=9E=E5=88=B0?= =?UTF-8?q?=E9=80=89=E6=8B=A9=E7=9A=84=E5=9F=8E=E5=B8=82=E7=9A=84fragment?= =?UTF-8?q?=E9=A1=B5=E9=9D=A2=E4=B8=AD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../activity/ChoiceCityActivity.java | 15 +++--- .../owen/weathergo/activity/WeatherMain.java | 54 ++++++++++--------- 2 files changed, 37 insertions(+), 32 deletions(-) diff --git a/app/src/main/java/com/example/owen/weathergo/activity/ChoiceCityActivity.java b/app/src/main/java/com/example/owen/weathergo/activity/ChoiceCityActivity.java index 238466c..f1244a4 100644 --- a/app/src/main/java/com/example/owen/weathergo/activity/ChoiceCityActivity.java +++ b/app/src/main/java/com/example/owen/weathergo/activity/ChoiceCityActivity.java @@ -105,6 +105,7 @@ public void onItemClick(View view, int pos) { setResult(RESULT_OK, intent); } else if (!"".equals(which_city)) { Intent intent = new Intent(); + intent.setClass(ChoiceCityActivity.this, WeatherMain.class); DBManager.getInstance().openDatabase(DBManager.WEATHER_DB_NAME); final SQLiteDatabase db = DBManager.getInstance().getDatabase(); Cursor cursor = db.rawQuery("select city from MultiCities", null); @@ -125,45 +126,45 @@ public void onItemClick(View view, int pos) { SharedPreferenceUtil.getInstance() .setCityName(selectedCity.getCityName()); //城市0 主城市 -// intent.putExtra("which_page", 0); + intent.putExtra("which_page", 0); break; case Tag_CITY_1: // String city = cityList.get(0); db.update("MultiCities", values, "city = ?", new String[]{ cityList.get(0) }); -// intent.putExtra("which_page", 1); + intent.putExtra("which_page", 1); break; case Tag_CITY_2: db.update("MultiCities", values, "city = ?", new String[]{ cityList.get(1) }); -// intent.putExtra("which_page", 2); + intent.putExtra("which_page", 2); // String city = cityList.get(1); break; case Tag_CITY_3: db.update("MultiCities", values, "city = ?", new String[]{ cityList.get(2) }); -// intent.putExtra("which_page", 3); + intent.putExtra("which_page", 3); break; case Tag_CITY_4: db.update("MultiCities", values, "city = ?", new String[]{ cityList.get(3) }); -// intent.putExtra("which_page", 4); + intent.putExtra("which_page", 4); break; case Tag_CITY_5: db.update("MultiCities", values, "city = ?", new String[]{ cityList.get(4) }); -// intent.putExtra("which_page", 5); + intent.putExtra("which_page", 5); break; default: } // setResult(RESULT_OK, intent); DBManager.getInstance().closeDatabase(); - + startActivity(intent); } // finish(); quit(); diff --git a/app/src/main/java/com/example/owen/weathergo/activity/WeatherMain.java b/app/src/main/java/com/example/owen/weathergo/activity/WeatherMain.java index 43db831..d3521ac 100644 --- a/app/src/main/java/com/example/owen/weathergo/activity/WeatherMain.java +++ b/app/src/main/java/com/example/owen/weathergo/activity/WeatherMain.java @@ -124,37 +124,38 @@ protected void onStart() { safeSetTitle(getResources().getString(R.string.app_name)); //防止刷新后城市顺序混乱出现title错误的现象 int cityNum = getIntent().getIntExtra("city_num", -1); + int pageNum = getIntent().getIntExtra("which_page", -1); // if (cityNum != -1) { - //如果在MultiCitiesManagerActivity中没有返回而是点击了其中一个城市进行跳转 - //就不会出发回调函数; - mHomePagerAdapter = new HomePagerAdapter(getSupportFragmentManager()); + //如果在MultiCitiesManagerActivity中没有返回而是点击了其中一个城市进行跳转 + //就不会出发回调函数; + mHomePagerAdapter = new HomePagerAdapter(getSupportFragmentManager()); // MainFragment mf = new MainFragment(); - mF = new MainFragment(); - mHomePagerAdapter.addTab(mF, SharedPreferenceUtil.getInstance().getCityName()); - cityList.clear(); - DBManager.getInstance().openDatabase(DBManager.WEATHER_DB_NAME); - final SQLiteDatabase db = DBManager.getInstance().getDatabase(); - Cursor cursor = db.rawQuery("select city from MultiCities", null); - if (cursor.moveToFirst()) { - do { - //遍历cursor - String city = cursor.getString(cursor.getColumnIndex("city")); - cityList.add(city); - } while (cursor.moveToNext()); - } - cursor.close(); - int mCityCount = (int) DBManager.getInstance().allCaseNum("MultiCities"); - DBManager.getInstance().closeDatabase(); + mF = new MainFragment(); + mHomePagerAdapter.addTab(mF, SharedPreferenceUtil.getInstance().getCityName()); + cityList.clear(); + DBManager.getInstance().openDatabase(DBManager.WEATHER_DB_NAME); + final SQLiteDatabase db = DBManager.getInstance().getDatabase(); + Cursor cursor = db.rawQuery("select city from MultiCities", null); + if (cursor.moveToFirst()) { + do { + //遍历cursor + String city = cursor.getString(cursor.getColumnIndex("city")); + cityList.add(city); + } while (cursor.moveToNext()); + } + cursor.close(); + int mCityCount = (int) DBManager.getInstance().allCaseNum("MultiCities"); + DBManager.getInstance().closeDatabase(); // Log.d("WeatherMainhuang", " onStart count " + mCityCount); - if (mCityCount != 0) { - for (int i = 0; i < mCityCount; i++) { + if (mCityCount != 0) { + for (int i = 0; i < mCityCount; i++) { // MultiCityFragment mtf = MultiCityFragment.newInstance(i, cityList.get(i)); - MultiCityFragment mft = MultiCityFragment.newInstance(i, cityList.get(i)); - Log.d("WeatherMainhuang", " onStart " + i); + MultiCityFragment mft = MultiCityFragment.newInstance(i, cityList.get(i)); + Log.d("WeatherMainhuang", " onStart " + i); // mHomePagerAdapter.addTab(mtf, cityList.get(i)); - mHomePagerAdapter.addTab(mft, cityList.get(i)); + mHomePagerAdapter.addTab(mft, cityList.get(i)); - } + } // } mViewPager.setAdapter(mHomePagerAdapter); if (mCityCount != 0) { @@ -163,6 +164,9 @@ protected void onStart() { // Log.d("WeatherMainhuang", "onStart getIntExtra " + cityNum); } mViewPager.setCurrentItem(cityNum + 1); + if (pageNum > -1) { + mViewPager.setCurrentItem(pageNum); + } super.onStart();//将super.onStart();移动到刷新操作之后再从多城市管理点击跳转就不崩溃了 } From 7009bebf3d3127fb29d1087771da3c546dea4ad5 Mon Sep 17 00:00:00 2001 From: huangshaohua Date: Fri, 16 Jun 2017 23:37:17 +0800 Subject: [PATCH 09/19] =?UTF-8?q?=E6=9A=82=E6=97=B6=E6=94=BE=E5=BC=83?= =?UTF-8?q?=E5=B1=80=E9=83=A8=E5=88=B7=E6=96=B0=EF=BC=9B=E9=80=9A=E8=BF=87?= =?UTF-8?q?=E6=95=B4=E4=BD=93activity=E5=88=B7=E6=96=B0=E5=AE=8C=E6=88=90?= =?UTF-8?q?=E4=B8=BB=E7=95=8C=E9=9D=A2=E8=BE=93=E5=85=A5=E5=9F=8E=E5=B8=82?= =?UTF-8?q?=E6=9F=A5=E8=AF=A2=E5=AF=B9=E5=BA=94=E5=A4=A9=E6=B0=94=E5=8A=9F?= =?UTF-8?q?=E8=83=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../owen/weathergo/activity/WeatherMain.java | 91 +++++++++++++++++-- 1 file changed, 83 insertions(+), 8 deletions(-) diff --git a/app/src/main/java/com/example/owen/weathergo/activity/WeatherMain.java b/app/src/main/java/com/example/owen/weathergo/activity/WeatherMain.java index d3521ac..04be93a 100644 --- a/app/src/main/java/com/example/owen/weathergo/activity/WeatherMain.java +++ b/app/src/main/java/com/example/owen/weathergo/activity/WeatherMain.java @@ -1,5 +1,6 @@ package com.example.owen.weathergo.activity; +import android.content.ContentValues; import android.content.Context; import android.content.Intent; import android.content.pm.PackageManager; @@ -64,8 +65,6 @@ public class WeatherMain extends AppCompatActivity private static final int SEARCH_CITY = 1; private static final int SCREEN_SHOOT = 2; - private static String mThisPage; - private static final String Tag_CITY_0 = "city_0_fragment"; private static final String Tag_CITY_1 = "city_1_fragment"; private static final String Tag_CITY_2 = "city_2_fragment"; @@ -73,6 +72,9 @@ public class WeatherMain extends AppCompatActivity private static final String Tag_CITY_4 = "city_4_fragment"; private static final String Tag_CITY_5 = "city_5_fragment"; + private static String mThisPage = Tag_CITY_0; + private static int mPageNum; + MultiCityFragment[] mFt; MainFragment mF; @@ -158,10 +160,8 @@ protected void onStart() { } // } mViewPager.setAdapter(mHomePagerAdapter); - if (mCityCount != 0) { - mTabLayout.setupWithViewPager(mViewPager, false); - } -// Log.d("WeatherMainhuang", "onStart getIntExtra " + cityNum); + mTabLayout.setupWithViewPager(mViewPager, false); + // Log.d("WeatherMainhuang", "onStart getIntExtra " + cityNum); } mViewPager.setCurrentItem(cityNum + 1); if (pageNum > -1) { @@ -245,6 +245,7 @@ public void onPageSelected(int position) { } else { titleStr = cityList.get(position - 1); } + mPageNum = position; safeSetTitle(titleStr); } }); @@ -280,13 +281,87 @@ public void toSearchDialog() { dialog.setYesOnclickListener("确定", new CityDialog.onYesOnclickListener() { @Override public void onYesClick() { - Message msg = new Message(); + /*Message msg = new Message(); msg.obj = dialog.mCityEdit.getText().toString(); msg.what = SEARCH_CITY; Bundle bundle = new Bundle(); bundle.putString("which_page", mThisPage);//用来判断当前Fragment页面的参数;用来进一步决定更改哪个城市 msg.setData(bundle); - mHandler.sendMessage(msg); + mHandler.sendMessage(msg);*/ + DBManager.getInstance().openDatabase(DBManager.WEATHER_DB_NAME); + final SQLiteDatabase db = DBManager.getInstance().getDatabase(); + Cursor cursor = db.rawQuery("select city from MultiCities", null); + ArrayList cityList = new ArrayList<>(); + if (cursor.moveToFirst()) { + do { + //遍历cursor + String city = cursor.getString(cursor.getColumnIndex("city")); + cityList.add(city); + } while (cursor.moveToNext()); + } + ContentValues values = new ContentValues(); + values.put("city", dialog.mCityEdit.getText().toString()); + switch (mThisPage) { + case Tag_CITY_0: + SharedPreferenceUtil.getInstance() + .setCityName(dialog.mCityEdit.getText().toString()); + //城市0 主城市 + break; + case Tag_CITY_1: +// String city = cityList.get(0); + db.update("MultiCities", values, "city = ?", new String[]{ + cityList.get(0) + }); + break; + case Tag_CITY_2: + db.update("MultiCities", values, "city = ?", new String[]{ + cityList.get(1) + }); + break; + case Tag_CITY_3: + db.update("MultiCities", values, "city = ?", new String[]{ + cityList.get(2) + }); + break; + case Tag_CITY_4: + db.update("MultiCities", values, "city = ?", new String[]{ + cityList.get(3) + }); + break; + case Tag_CITY_5: + db.update("MultiCities", values, "city = ?", new String[]{ + cityList.get(4) + }); + break; + default: + } + + mHomePagerAdapter = new HomePagerAdapter(getSupportFragmentManager()); + mF = new MainFragment(); + mHomePagerAdapter.addTab(mF, SharedPreferenceUtil.getInstance().getCityName()); + cityList.clear(); + if (cursor.moveToFirst()) { + do { + //遍历cursor + String city = cursor.getString(cursor.getColumnIndex("city")); + cityList.add(city); + } while (cursor.moveToNext()); + } + cursor.close(); + int mCityCount = (int) DBManager.getInstance().allCaseNum("MultiCities"); + DBManager.getInstance().closeDatabase(); + if (mCityCount != 0) { + for (int i = 0; i < mCityCount; i++) { + MultiCityFragment mft = MultiCityFragment.newInstance(i, cityList.get(i)); + mHomePagerAdapter.addTab(mft, cityList.get(i)); + } + mViewPager.setAdapter(mHomePagerAdapter); + mTabLayout.setupWithViewPager(mViewPager, false); + } + mViewPager.setCurrentItem(mPageNum); +// if (pageNum > -1) { +// mViewPager.setCurrentItem(pageNum); +// } dialog.dismiss(); } }); From c1ca84f9df1e0d009a4b740719d353054d3590d3 Mon Sep 17 00:00:00 2001 From: huangshaohua Date: Fri, 16 Jun 2017 23:47:18 +0800 Subject: [PATCH 10/19] =?UTF-8?q?=E8=A7=A3=E5=86=B3=E4=BA=86=E5=9B=A0?= =?UTF-8?q?=E5=85=A8=E5=B1=80=E7=A7=81=E6=9C=89=E5=8F=98=E9=87=8F=E5=BC=95?= =?UTF-8?q?=E8=B5=B7=E7=9A=84=E8=BE=93=E5=85=A5=E5=9F=8E=E5=B8=82=E5=90=8D?= =?UTF-8?q?=E6=9F=A5=E8=AF=A2=E5=A4=A9=E6=B0=94=E6=A0=87=E9=A2=98=E6=A0=8F?= =?UTF-8?q?=E4=B8=8D=E5=8F=98=E7=9A=84=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../com/example/owen/weathergo/activity/WeatherMain.java | 9 ++++----- 1 file changed, 4 insertions(+), 5 deletions(-) diff --git a/app/src/main/java/com/example/owen/weathergo/activity/WeatherMain.java b/app/src/main/java/com/example/owen/weathergo/activity/WeatherMain.java index 04be93a..6c00d43 100644 --- a/app/src/main/java/com/example/owen/weathergo/activity/WeatherMain.java +++ b/app/src/main/java/com/example/owen/weathergo/activity/WeatherMain.java @@ -291,14 +291,15 @@ public void onYesClick() { DBManager.getInstance().openDatabase(DBManager.WEATHER_DB_NAME); final SQLiteDatabase db = DBManager.getInstance().getDatabase(); Cursor cursor = db.rawQuery("select city from MultiCities", null); - ArrayList cityList = new ArrayList<>(); +// ArrayList cityList = new ArrayList<>(); + /*cityList.clear(); if (cursor.moveToFirst()) { do { //遍历cursor String city = cursor.getString(cursor.getColumnIndex("city")); cityList.add(city); } while (cursor.moveToNext()); - } + }*/ ContentValues values = new ContentValues(); values.put("city", dialog.mCityEdit.getText().toString()); switch (mThisPage) { @@ -359,9 +360,7 @@ public void onYesClick() { mTabLayout.setupWithViewPager(mViewPager, false); } mViewPager.setCurrentItem(mPageNum); -// if (pageNum > -1) { -// mViewPager.setCurrentItem(pageNum); -// } +// safeSetTitle(cityList.get(mPageNum)); dialog.dismiss(); } }); From 75c4432f4cb8d3171906e2decd2d892c2d5e3429 Mon Sep 17 00:00:00 2001 From: huangshaohua Date: Sat, 17 Jun 2017 14:40:10 +0800 Subject: [PATCH 11/19] =?UTF-8?q?=E6=B8=85=E7=90=86=E9=83=A8=E5=88=86?= =?UTF-8?q?=E8=BF=87=E7=A8=8B=E4=BB=A3=E7=A0=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../owen/weathergo/activity/WeatherMain.java | 92 +------------------ 1 file changed, 3 insertions(+), 89 deletions(-) diff --git a/app/src/main/java/com/example/owen/weathergo/activity/WeatherMain.java b/app/src/main/java/com/example/owen/weathergo/activity/WeatherMain.java index 6c00d43..9aea5a1 100644 --- a/app/src/main/java/com/example/owen/weathergo/activity/WeatherMain.java +++ b/app/src/main/java/com/example/owen/weathergo/activity/WeatherMain.java @@ -23,8 +23,6 @@ import android.support.v7.app.ActionBarDrawerToggle; import android.support.v7.app.AppCompatActivity; import android.support.v7.widget.Toolbar; -//import android.util.Log; -import android.util.Log; import android.view.Menu; import android.view.MenuInflater; import android.view.MenuItem; @@ -52,6 +50,8 @@ import butterknife.BindView; import butterknife.ButterKnife; +//import android.util.Log; + public class WeatherMain extends AppCompatActivity implements NavigationView.OnNavigationItemSelectedListener { @@ -112,26 +112,18 @@ protected void onCreate(Bundle savedInstanceState) { @Override protected void onRestart() { super.onRestart(); -// mDrawerLayout.closeDrawers(); } @Override protected void onStart() { - - //从多城市管理界面跳转过来,并接收选中的城市编号 -// Intent intent = this.getIntent(); -// if (intent.getExtras().getString("city_num", "-1") != null) { - //如果是从多城市管理页面回来的话,则刷新页面 safeSetTitle(getResources().getString(R.string.app_name)); //防止刷新后城市顺序混乱出现title错误的现象 int cityNum = getIntent().getIntExtra("city_num", -1); int pageNum = getIntent().getIntExtra("which_page", -1); -// if (cityNum != -1) { //如果在MultiCitiesManagerActivity中没有返回而是点击了其中一个城市进行跳转 //就不会出发回调函数; mHomePagerAdapter = new HomePagerAdapter(getSupportFragmentManager()); -// MainFragment mf = new MainFragment(); mF = new MainFragment(); mHomePagerAdapter.addTab(mF, SharedPreferenceUtil.getInstance().getCityName()); cityList.clear(); @@ -148,20 +140,14 @@ protected void onStart() { cursor.close(); int mCityCount = (int) DBManager.getInstance().allCaseNum("MultiCities"); DBManager.getInstance().closeDatabase(); -// Log.d("WeatherMainhuang", " onStart count " + mCityCount); if (mCityCount != 0) { for (int i = 0; i < mCityCount; i++) { -// MultiCityFragment mtf = MultiCityFragment.newInstance(i, cityList.get(i)); MultiCityFragment mft = MultiCityFragment.newInstance(i, cityList.get(i)); - Log.d("WeatherMainhuang", " onStart " + i); -// mHomePagerAdapter.addTab(mtf, cityList.get(i)); mHomePagerAdapter.addTab(mft, cityList.get(i)); } -// } mViewPager.setAdapter(mHomePagerAdapter); mTabLayout.setupWithViewPager(mViewPager, false); - // Log.d("WeatherMainhuang", "onStart getIntExtra " + cityNum); } mViewPager.setCurrentItem(cityNum + 1); if (pageNum > -1) { @@ -208,37 +194,24 @@ public void onPageSelected(int position) { //通过当前Fragment决定搜索或选择城市时在哪个位置更改 case 0: mThisPage = Tag_CITY_0; - if (mF != null) - mF.onAttach(WeatherMain.this); break; case 1: mThisPage = Tag_CITY_1; - if (mFt != null) - mFt[0].onAttach(WeatherMain.this); break; case 2: mThisPage = Tag_CITY_2; - if (mFt != null) - mFt[1].onAttach(WeatherMain.this); break; case 3: mThisPage = Tag_CITY_3; - if (mFt != null) - mFt[2].onAttach(WeatherMain.this); break; case 4: mThisPage = Tag_CITY_4; - if (mFt != null) - mFt[3].onAttach(WeatherMain.this); break; case 5: mThisPage = Tag_CITY_5; - if (mFt != null) - mFt[4].onAttach(WeatherMain.this); break; default: } - Log.d("WeatherMainhuang ", " pagechange " + mThisPage); String titleStr; if (position == 0) { titleStr = SharedPreferenceUtil.getInstance().getCityName(); @@ -265,7 +238,6 @@ public boolean onOptionsItemSelected(MenuItem item) { Message msg = new Message(); msg.what = SCREEN_SHOOT; mHandler.sendMessage(msg); -// startActivity(new Intent(WeatherMain.this,Test.class)); break; default: break; @@ -281,25 +253,9 @@ public void toSearchDialog() { dialog.setYesOnclickListener("确定", new CityDialog.onYesOnclickListener() { @Override public void onYesClick() { - /*Message msg = new Message(); - msg.obj = dialog.mCityEdit.getText().toString(); - msg.what = SEARCH_CITY; - Bundle bundle = new Bundle(); - bundle.putString("which_page", mThisPage);//用来判断当前Fragment页面的参数;用来进一步决定更改哪个城市 - msg.setData(bundle); - mHandler.sendMessage(msg);*/ DBManager.getInstance().openDatabase(DBManager.WEATHER_DB_NAME); final SQLiteDatabase db = DBManager.getInstance().getDatabase(); Cursor cursor = db.rawQuery("select city from MultiCities", null); -// ArrayList cityList = new ArrayList<>(); - /*cityList.clear(); - if (cursor.moveToFirst()) { - do { - //遍历cursor - String city = cursor.getString(cursor.getColumnIndex("city")); - cityList.add(city); - } while (cursor.moveToNext()); - }*/ ContentValues values = new ContentValues(); values.put("city", dialog.mCityEdit.getText().toString()); switch (mThisPage) { @@ -309,7 +265,6 @@ public void onYesClick() { //城市0 主城市 break; case Tag_CITY_1: -// String city = cityList.get(0); db.update("MultiCities", values, "city = ?", new String[]{ cityList.get(0) }); @@ -360,7 +315,6 @@ public void onYesClick() { mTabLayout.setupWithViewPager(mViewPager, false); } mViewPager.setCurrentItem(mPageNum); -// safeSetTitle(cityList.get(mPageNum)); dialog.dismiss(); } }); @@ -384,17 +338,9 @@ public void onNoClick() { * (2)如果已经3个则弹出框提示已经选择超限制 */ private void toAddDialog() { - /*MultiCityFragment tf = new MultiCityFragment(); - mHomePagerAdapter.addTab(tf, ""); - mHomePagerAdapter.notifyDataSetChanged(); - mDrawerLayout.closeDrawers(); - mViewPager.setCurrentItem(1);*/ -// ToastUtil.showShort("Multi Cities"); - Intent intent = new Intent(); intent.setClass(WeatherMain.this, MultiCitiesManagerActivity.class); startActivityForResult(intent, 2); -// MultiCitiesManagerActivity.launch(this); } @Override @@ -406,7 +352,6 @@ protected void onActivityResult(int requestCode, int resultCode, Intent data) { mHomePagerAdapter = new HomePagerAdapter(getSupportFragmentManager()); MainFragment mf = new MainFragment(); mHomePagerAdapter.addTab(mf, SharedPreferenceUtil.getInstance().getCityName()); -// mViewPager.removeAllViews(); cityList.clear(); DBManager.getInstance().openDatabase(DBManager.WEATHER_DB_NAME); final SQLiteDatabase db = DBManager.getInstance().getDatabase(); @@ -421,21 +366,13 @@ protected void onActivityResult(int requestCode, int resultCode, Intent data) { cursor.close(); int mCityCount = (int) DBManager.getInstance().allCaseNum("MultiCities"); DBManager.getInstance().closeDatabase(); -// Log.d("WeatherMainhuang", " onActivityResult count " + mCityCount); if (mCityCount != 0) { for (int i = 0; i < mCityCount; i++) { -// for (int i = 0; i < 2; i++) { MultiCityFragment mtf = MultiCityFragment.newInstance(i, cityList.get(i)); -// Log.d("WeatherMainhuang", " onActivityResult " + cityList.get(i)); mHomePagerAdapter.addTab(mtf, cityList.get(i)); -// mHomePagerAdapter.notifyDataSetChanged(); } } - /*if (!"".equals(SharedPreferenceUtil.getInstance().getString("city_1", ""))) { - MultiCityFragment tf = new MultiCityFragment(); - mHomePagerAdapter.addTab(tf, ""); - }*/ -// mHomePagerAdapter.notifyDataSetChanged(); + mViewPager.setAdapter(mHomePagerAdapter); if (mCityCount != 0) { mTabLayout.setupWithViewPager(mViewPager, false); @@ -447,7 +384,6 @@ protected void onActivityResult(int requestCode, int resultCode, Intent data) { mHomePagerAdapter = new HomePagerAdapter(getSupportFragmentManager()); MainFragment mf = new MainFragment(); mHomePagerAdapter.addTab(mf, SharedPreferenceUtil.getInstance().getCityName()); -// mViewPager.removeAllViews(); cityList.clear(); DBManager.getInstance().openDatabase(DBManager.WEATHER_DB_NAME); final SQLiteDatabase db = DBManager.getInstance().getDatabase(); @@ -462,21 +398,12 @@ protected void onActivityResult(int requestCode, int resultCode, Intent data) { cursor.close(); int mCityCount = (int) DBManager.getInstance().allCaseNum("MultiCities"); DBManager.getInstance().closeDatabase(); -// Log.d("WeatherMainhuang", " onActivityResult count " + mCityCount); if (mCityCount != 0) { for (int i = 0; i < mCityCount; i++) { -// for (int i = 0; i < 2; i++) { MultiCityFragment mtf = MultiCityFragment.newInstance(i, cityList.get(i)); -// Log.d("WeatherMainhuang", " onActivityResult " + cityList.get(i)); mHomePagerAdapter.addTab(mtf, cityList.get(i)); -// mHomePagerAdapter.notifyDataSetChanged(); } } - /*if (!"".equals(SharedPreferenceUtil.getInstance().getString("city_1", ""))) { - MultiCityFragment tf = new MultiCityFragment(); - mHomePagerAdapter.addTab(tf, ""); - }*/ -// mHomePagerAdapter.notifyDataSetChanged(); mViewPager.setAdapter(mHomePagerAdapter); if (mCityCount != 0) { mTabLayout.setupWithViewPager(mViewPager, false); @@ -497,7 +424,6 @@ protected void onDestroy() { if (mLocationClient != null) mLocationClient.stop(); //先判空,否则可能fc - DBManager.getInstance().closeDatabase(); } @@ -517,7 +443,6 @@ public void init() { mHomePagerAdapter = new HomePagerAdapter(getSupportFragmentManager()); MainFragment mf = new MainFragment(); mHomePagerAdapter.addTab(mf, SharedPreferenceUtil.getInstance().getCityName()); - DBManager.getInstance().openDatabase(DBManager.WEATHER_DB_NAME); final SQLiteDatabase db = DBManager.getInstance().getDatabase(); Cursor cursor = db.rawQuery("select city from MultiCities", null); @@ -533,26 +458,17 @@ public void init() { DBManager.getInstance().closeDatabase(); if (mCityCount != 0) { for (int i = 0; i < mCityCount; i++) { -// for (int i = 0; i < 2; i++) { MultiCityFragment mtf = MultiCityFragment.newInstance(i, cityList.get(i)); -// Log.d("WeatherMainhuang", " init " + cityList.get(i)); mHomePagerAdapter.addTab(mtf, cityList.get(i)); -// mHomePagerAdapter.notifyDataSetChanged(); } } - /*if (!"".equals(SharedPreferenceUtil.getInstance().getString("city_1", ""))) { - MultiCityFragment tf = new MultiCityFragment(); - mHomePagerAdapter.addTab(tf, ""); - }*/ mViewPager.setAdapter(mHomePagerAdapter); if (mCityCount != 0) { mTabLayout.setupWithViewPager(mViewPager, false); } String cCity = SharedPreferenceUtil.getInstance().getCityName(); -// Log.d("WeatherMainhuang", " init " + cCity); if ("".equals(cCity) || cCity == null)//判断SharedPreference中存储的是否为空,即如果第一次执行程序不会变为空值进行初始赋值 { -// Log.d("WeatherMainhuang", " initLocation " + cCity); initLocation(); } } @@ -656,8 +572,6 @@ public boolean onNavigationItemSelected(@NonNull MenuItem item) { intent.setClass(WeatherMain.this, ChoiceCityActivity.class); intent.putExtra("which_city", mThisPage); startActivity(intent); -// startActivityForResult(intent, 3); -// ChoiceCityActivity.launch(WeatherMain.this); break; case R.id.nav_edit_city: toSearchDialog(); From c14b7d965874e4a54bed9d290dcc08266cad3bae Mon Sep 17 00:00:00 2001 From: huangshaohua Date: Sat, 17 Jun 2017 14:58:17 +0800 Subject: [PATCH 12/19] =?UTF-8?q?=E6=B8=85=E7=90=86=E9=83=A8=E5=88=86?= =?UTF-8?q?=E8=BF=87=E7=A8=8B=E4=BB=A3=E7=A0=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../activity/MultiCitiesManagerActivity.java | 29 ---- .../owen/weathergo/activity/WeatherMain.java | 35 ++--- .../example/owen/weathergo/common/base/C.java | 10 +- .../modules/fragment/MainFragment.java | 33 +---- .../modules/fragment/MultiCityFragment.java | 128 +----------------- 5 files changed, 31 insertions(+), 204 deletions(-) diff --git a/app/src/main/java/com/example/owen/weathergo/activity/MultiCitiesManagerActivity.java b/app/src/main/java/com/example/owen/weathergo/activity/MultiCitiesManagerActivity.java index 1b7b462..5701ac4 100644 --- a/app/src/main/java/com/example/owen/weathergo/activity/MultiCitiesManagerActivity.java +++ b/app/src/main/java/com/example/owen/weathergo/activity/MultiCitiesManagerActivity.java @@ -63,7 +63,6 @@ private void init() { setTitle("多城市管理"); DBManager.getInstance().openDatabase(DBManager.WEATHER_DB_NAME); final SQLiteDatabase db = DBManager.getInstance().getDatabase(); -// ToastUtil.showShort("" + db); Cursor cursor = db.rawQuery("select city from MultiCities", null); if (cursor.moveToFirst()) { do { @@ -74,11 +73,7 @@ private void init() { } cursor.close(); mCityCount = (int) DBManager.getInstance().allCaseNum("MultiCities"); -// DBManager.getInstance().closeDatabase(); - /*cityList.add("洛阳"); - cityList.add("开封");*/ cityList.add("添加城市"); -// initRecycleView(); DBManager.getInstance().closeDatabase(); } @@ -97,7 +92,6 @@ public void onItemClick(View view, int pos) { dialog.setSelectOnclickListener(new MultiCityAddDialog.onSelectOnclickListener() { @Override public void onSelectClick() { -// ToastUtil.showShort("selectCity"); Intent intent = new Intent(); intent.setClass(MultiCitiesManagerActivity.this, ChoiceCityActivity.class); intent.putExtra("what_to_do", "select_multi_city"); @@ -116,7 +110,6 @@ public void onYesClick() { if (!"".equals(dialog2.mCityEdit.getText().toString())) { for (String city : cityList) { if (city.equals(dialog2.mCityEdit.getText().toString())) { -// ToastUtil.showShort("城市已存在!"); AlertDialog.Builder dialog3 = new AlertDialog.Builder( MultiCitiesManagerActivity.this); dialog3.setMessage("城市已存在😁") @@ -168,10 +161,7 @@ public void onNoClick() { } else { Intent intent = new Intent(MultiCitiesManagerActivity.this, WeatherMain.class); intent.putExtra("city_num", pos); -// Log.d("MultiCitiesManagerActivityhuang startActivity ", " pos " + pos); startActivity(intent); -// quit(); -// ToastUtil.showShort("dianjil" + cityList.get(pos)); } } @@ -180,7 +170,6 @@ public void onNoClick() { @Override public void onItemLongClick(View view, int pos) { if (pos < mCityCount) { -// ToastUtil.showShort("shanchu" + cityList.get(pos)); toDeleteCity(cityList.get(pos)); } } @@ -201,30 +190,12 @@ protected void onActivityResult(int requestCode, int resultCode, Intent data) { if (resultCode == RESULT_OK) { Boolean addData = true; mResultCity = data.getStringExtra("select_multi_city"); -// Log.d("MultiCitiesManagerActivityhuang", " onActivityResult " -// + mResultCity); if (!"".equals(mResultCity) && mResultCity != null) { DBManager.getInstance().openDatabase(DBManager.WEATHER_DB_NAME); final ContentValues values = new ContentValues(); final SQLiteDatabase db = DBManager.getInstance().getDatabase(); - - /*Cursor cursor = db.rawQuery("select city from MultiCities", null); - if (cursor.moveToFirst()) { - do { - //遍历cursor - String city = cursor.getString(cursor.getColumnIndex("city")); - if (city.equals(mResultCity)) { - ToastUtil.showShort("已经选择过这个城市啦!"); - addData = false; - break; - } - } while (cursor.moveToNext()); - } - cursor.close();*/ - for (String city : cityList) { if (city.equals(mResultCity)) { -// ToastUtil.showShort("城市已存在!"); AlertDialog.Builder dialog3 = new AlertDialog.Builder( MultiCitiesManagerActivity.this); dialog3.setMessage("城市已存在😁") diff --git a/app/src/main/java/com/example/owen/weathergo/activity/WeatherMain.java b/app/src/main/java/com/example/owen/weathergo/activity/WeatherMain.java index 9aea5a1..cba0bc2 100644 --- a/app/src/main/java/com/example/owen/weathergo/activity/WeatherMain.java +++ b/app/src/main/java/com/example/owen/weathergo/activity/WeatherMain.java @@ -36,6 +36,7 @@ import com.baidu.location.LocationClientOption; import com.example.owen.weathergo.R; import com.example.owen.weathergo.common.DoubleClickExit; +import com.example.owen.weathergo.common.base.C; import com.example.owen.weathergo.dialog.CityDialog; import com.example.owen.weathergo.modules.adapter.HomePagerAdapter; import com.example.owen.weathergo.modules.fragment.MainFragment; @@ -50,7 +51,6 @@ import butterknife.BindView; import butterknife.ButterKnife; -//import android.util.Log; public class WeatherMain extends AppCompatActivity implements NavigationView.OnNavigationItemSelectedListener { @@ -65,14 +65,7 @@ public class WeatherMain extends AppCompatActivity private static final int SEARCH_CITY = 1; private static final int SCREEN_SHOOT = 2; - private static final String Tag_CITY_0 = "city_0_fragment"; - private static final String Tag_CITY_1 = "city_1_fragment"; - private static final String Tag_CITY_2 = "city_2_fragment"; - private static final String Tag_CITY_3 = "city_3_fragment"; - private static final String Tag_CITY_4 = "city_4_fragment"; - private static final String Tag_CITY_5 = "city_5_fragment"; - - private static String mThisPage = Tag_CITY_0; + private static String mThisPage = C.Tag_CITY_0; private static int mPageNum; MultiCityFragment[] mFt; @@ -193,22 +186,22 @@ public void onPageSelected(int position) { switch (position) { //通过当前Fragment决定搜索或选择城市时在哪个位置更改 case 0: - mThisPage = Tag_CITY_0; + mThisPage = C.Tag_CITY_0; break; case 1: - mThisPage = Tag_CITY_1; + mThisPage = C.Tag_CITY_1; break; case 2: - mThisPage = Tag_CITY_2; + mThisPage = C.Tag_CITY_2; break; case 3: - mThisPage = Tag_CITY_3; + mThisPage = C.Tag_CITY_3; break; case 4: - mThisPage = Tag_CITY_4; + mThisPage = C.Tag_CITY_4; break; case 5: - mThisPage = Tag_CITY_5; + mThisPage = C.Tag_CITY_5; break; default: } @@ -259,32 +252,32 @@ public void onYesClick() { ContentValues values = new ContentValues(); values.put("city", dialog.mCityEdit.getText().toString()); switch (mThisPage) { - case Tag_CITY_0: + case C.Tag_CITY_0: SharedPreferenceUtil.getInstance() .setCityName(dialog.mCityEdit.getText().toString()); //城市0 主城市 break; - case Tag_CITY_1: + case C.Tag_CITY_1: db.update("MultiCities", values, "city = ?", new String[]{ cityList.get(0) }); break; - case Tag_CITY_2: + case C.Tag_CITY_2: db.update("MultiCities", values, "city = ?", new String[]{ cityList.get(1) }); break; - case Tag_CITY_3: + case C.Tag_CITY_3: db.update("MultiCities", values, "city = ?", new String[]{ cityList.get(2) }); break; - case Tag_CITY_4: + case C.Tag_CITY_4: db.update("MultiCities", values, "city = ?", new String[]{ cityList.get(3) }); break; - case Tag_CITY_5: + case C.Tag_CITY_5: db.update("MultiCities", values, "city = ?", new String[]{ cityList.get(4) }); diff --git a/app/src/main/java/com/example/owen/weathergo/common/base/C.java b/app/src/main/java/com/example/owen/weathergo/common/base/C.java index dcdabd2..8b1f58e 100644 --- a/app/src/main/java/com/example/owen/weathergo/common/base/C.java +++ b/app/src/main/java/com/example/owen/weathergo/common/base/C.java @@ -11,5 +11,13 @@ public class C { public static final String AUTHOR = "Owen.H"; public static final String HOST = "https://api.heweather.com/x3/"; public static final String ORM_NAME = "cities.db"; - + + public static final String Tag_CITY_0 = "city_0_fragment"; + public static final String Tag_CITY_1 = "city_1_fragment"; + public static final String Tag_CITY_2 = "city_2_fragment"; + public static final String Tag_CITY_3 = "city_3_fragment"; + public static final String Tag_CITY_4 = "city_4_fragment"; + public static final String Tag_CITY_5 = "city_5_fragment"; + + } diff --git a/app/src/main/java/com/example/owen/weathergo/modules/fragment/MainFragment.java b/app/src/main/java/com/example/owen/weathergo/modules/fragment/MainFragment.java index f5a0d5b..ea618e1 100644 --- a/app/src/main/java/com/example/owen/weathergo/modules/fragment/MainFragment.java +++ b/app/src/main/java/com/example/owen/weathergo/modules/fragment/MainFragment.java @@ -1,6 +1,5 @@ package com.example.owen.weathergo.modules.fragment; -import android.app.Activity; import android.content.Intent; import android.graphics.Bitmap; import android.os.Build; @@ -15,7 +14,6 @@ import android.support.v7.app.AppCompatActivity; import android.support.v7.widget.LinearLayoutManager; import android.support.v7.widget.RecyclerView; -import android.util.Log; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; @@ -26,6 +24,7 @@ import com.example.owen.weathergo.R; import com.example.owen.weathergo.activity.WeatherMain; +import com.example.owen.weathergo.common.base.C; import com.example.owen.weathergo.modules.adapter.WeatherAdapter; import com.example.owen.weathergo.modules.domain.Weather; import com.example.owen.weathergo.service.AutoUpdateService; @@ -42,7 +41,6 @@ public class MainFragment extends Fragment { - private static final String Tag_CITY_0 = "city_0_fragment"; private static final int UPDATE_WEATHER_DATA = 0; private static final int SEARCH_CITY = 1; private static final int SCREEN_SHOOT = 2; @@ -88,8 +86,7 @@ public void handleMessage(Message msg) { break; case SEARCH_CITY: - if (msg.getData().getString("which_page").equals(Tag_CITY_0)) { - Log.d("MainFragmenthuang", " SEARCH_CITY " + msg.getData().getString("which_page")); + if (msg.getData().getString("which_page").equals(C.Tag_CITY_0)) { //Fragment与activity交互http://blog.csdn.net/huangyabin001/article/details/35231753 if (!msg.obj.toString().equals("")) { mCityStr = msg.obj.toString(); @@ -141,25 +138,6 @@ public void onCreate(@Nullable Bundle savedInstanceState) { mToastSuccess = 0; } - //此Fragment是否可见 - @Override - public void setUserVisibleHint(boolean isVisibleToUser) { - if (isVisibleToUser && isVisible()) { -// initData(); - /*mActivity = (WeatherMain) getActivity(); - mActivity.setHandler(mHandler);*/ - - } - super.setUserVisibleHint(isVisibleToUser); - } - - @Override - public void onAttach(Activity activity) { - super.onAttach(activity); - mActivity = (WeatherMain) activity; - mActivity.setHandler(mHandler); - } - //@Nullable 表示定义的字段可以为空. @RequiresApi(api = Build.VERSION_CODES.KITKAT) @Nullable @@ -175,7 +153,6 @@ public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, new Thread(new Runnable() { @Override public void run() { - Log.d("MainFragmenthuang ", " onCreateView " + mCityStr); mWeather = JSONUtil.getInstance().getWeather(getActivity(), mCityStr); Message message = new Message(); message.what = UPDATE_WEATHER_DATA; @@ -200,13 +177,11 @@ public void onStart() { //以节省流量和访问次数(因为每次打开app时用户的位置数据是基本不会改变的) super.onStart(); String Ccity = SharedPreferenceUtil.getInstance().getCityName(); - Log.d("MainFragmenthuang ", " onStart " + mCityStr + "\n" + Ccity); if (!"".equals(Ccity) && !Ccity.equals(mCityStr)) { mCityStr = Ccity; new Thread(new Runnable() { @Override public void run() { - Log.d("MainFragmenthuang ", " onStart " + mCityStr); mWeather = JSONUtil.getInstance().getWeather(getActivity(), mCityStr); Message message = new Message(); message.what = UPDATE_WEATHER_DATA; @@ -238,11 +213,8 @@ public void init() { if (!"".equals(cCity) && cCity != null)//判断SharedPreference中存储的是否为空,即如果第一次执行程序不会变为空值进行初始赋值 { mCityStr = cCity; -// safeSetTitle(mCityStr); - Log.d("MainFragmenthuang ", " init " + mCityStr); } mNoData.setVisibility(View.GONE); - Log.d("MainFragmenthuang ", " init2 " + mCityStr); initRecycleView(); } @@ -325,7 +297,6 @@ public void getWeather() { mRecycleView.setAdapter(mWeatherAdapter = new WeatherAdapter(mWeather)); mGCityStr = mWeather.getBasic().getCity(); if (!mGCityStr.equals("")) { -// safeSetTitle(mGCityStr); } Intent intent = new Intent(getActivity(), AutoUpdateService.class); getActivity().startService(intent); diff --git a/app/src/main/java/com/example/owen/weathergo/modules/fragment/MultiCityFragment.java b/app/src/main/java/com/example/owen/weathergo/modules/fragment/MultiCityFragment.java index db3e0de..7a3873f 100644 --- a/app/src/main/java/com/example/owen/weathergo/modules/fragment/MultiCityFragment.java +++ b/app/src/main/java/com/example/owen/weathergo/modules/fragment/MultiCityFragment.java @@ -1,6 +1,5 @@ package com.example.owen.weathergo.modules.fragment; -import android.app.Activity; import android.content.ContentValues; import android.database.Cursor; import android.database.sqlite.SQLiteDatabase; @@ -27,6 +26,7 @@ import com.example.owen.weathergo.R; import com.example.owen.weathergo.activity.WeatherMain; +import com.example.owen.weathergo.common.base.C; import com.example.owen.weathergo.modules.adapter.WeatherAdapter; import com.example.owen.weathergo.modules.domain.Weather; import com.example.owen.weathergo.util.DBManager; @@ -53,11 +53,6 @@ public class MultiCityFragment extends Fragment { private static String mThisPage; - private static final String Tag_CITY_1 = "city_1_fragment"; - private static final String Tag_CITY_2 = "city_2_fragment"; - private static final String Tag_CITY_3 = "city_3_fragment"; - private static final String Tag_CITY_4 = "city_4_fragment"; - private static final String Tag_CITY_5 = "city_5_fragment"; @BindView(R.id.no_city_data) TextView mNoCityData; @@ -95,12 +90,9 @@ public void handleMessage(Message msg) { break; case SEARCH_CITY: - Log.d("MultiCityFragmenthuang", " SEARCH_CITY -1 " + mThisPage + mCityStr + "\n" - + msg.getData().getString("which_page")); //Fragment与activity交互http://blog.csdn.net/huangyabin001/article/details/35231753 if (!msg.obj.toString().equals("")) { if (mThisPage.equals(msg.getData().getString("which_page"))) { - Log.d("MultiCityFragmenthuang", " SEARCH_CITY " + msg.getData().getString("which_page")); mCityStr = msg.obj.toString(); DBManager.getInstance().openDatabase(DBManager.WEATHER_DB_NAME); final SQLiteDatabase db = DBManager.getInstance().getDatabase(); @@ -121,25 +113,6 @@ public void handleMessage(Message msg) { db.update("MultiCities", values, "city = ?", new String[]{ Ccity }); - - /*switch (mCityNum + 1) { - case CITY_NUM_1: - SharedPreferenceUtil.getInstance().putString("city_1", mCityStr); - break; - case CITY_NUM_2: - SharedPreferenceUtil.getInstance().putString("city_2", mCityStr); - break; - case CITY_NUM_3: - SharedPreferenceUtil.getInstance().putString("city_3", mCityStr); - break; - case CITY_NUM_4: - SharedPreferenceUtil.getInstance().putString("city_4", mCityStr); - break; - case CITY_NUM_5: - SharedPreferenceUtil.getInstance().putString("city_5", mCityStr); - break; - }*/ -// SharedPreferenceUtil.getInstance().putString("city_1", mCityStr); new Thread(new Runnable() { @Override public void run() { @@ -205,42 +178,22 @@ public void onCreate(@Nullable Bundle savedInstanceState) { switch (mCityNum) { //通过当前Fragment决定搜索或选择城市时在哪个位置更改 case 0: - mThisPage = Tag_CITY_1; + mThisPage = C.Tag_CITY_1; break; case 1: - mThisPage = Tag_CITY_2; + mThisPage = C.Tag_CITY_2; break; case 2: - mThisPage = Tag_CITY_3; + mThisPage = C.Tag_CITY_3; break; case 3: - mThisPage = Tag_CITY_4; + mThisPage = C.Tag_CITY_4; break; case 4: - mThisPage = Tag_CITY_5; + mThisPage = C.Tag_CITY_5; break; default: } - Log.d("MultiCityFragmenthuang", " onCreate " + mCityStr + " " + mCityNum); - } - - //此Fragment是否可见 - @Override - public void setUserVisibleHint(boolean isVisibleToUser) { - if (isVisibleToUser && isVisible()) { -// initData(); - /*mActivity = (WeatherMain) getActivity(); - mActivity.setHandler(mHandler);*/ - - } - super.setUserVisibleHint(isVisibleToUser); - } - - @Override - public void onAttach(Activity activity) { - super.onAttach(activity); - mActivity = (WeatherMain) activity; - mActivity.setHandler(mHandler); } //@Nullable 表示定义的字段可以为空. @@ -296,25 +249,6 @@ public void onStart() { } cursor.close(); String Ccity = cityList.get(mCityNum); - Log.d("MultiCityFragmenthuang", " onStart " + Ccity + " " + mCityNum); - /*switch (mCityNum + 1) { - case CITY_NUM_1: - Ccity = SharedPreferenceUtil.getInstance().getString("city_1", ""); - break; - case CITY_NUM_2: - Ccity = SharedPreferenceUtil.getInstance().getString("city_2", ""); - break; - case CITY_NUM_3: - Ccity = SharedPreferenceUtil.getInstance().getString("city_3", ""); - break; - case CITY_NUM_4: - Ccity = SharedPreferenceUtil.getInstance().getString("city_4", ""); - break; - case CITY_NUM_5: - Ccity = SharedPreferenceUtil.getInstance().getString("city_5", ""); - break; - }*/ -// String Ccity = SharedPreferenceUtil.getInstance().getString("city_1", ""); if (!"".equals(Ccity) && !Ccity.equals(mCityStr)) { mCityStr = Ccity; new Thread(new Runnable() { @@ -332,8 +266,6 @@ public void run() { @Override public void onDestroy() { super.onDestroy(); - /*Intent intent = new Intent(getActivity(), AutoUpdateService.class); - getActivity().stopService(intent);*/ DBManager.getInstance().closeDatabase(); } @@ -356,30 +288,9 @@ public void init() { } cursor.close(); String cCity = cityList.get(mCityNum); - Log.d("MultiCityFragmenthuang", " init " + cCity + " " + mCityNum); -// String cCity = ""; - /*switch (mCityNum + 1) { - case CITY_NUM_1: - cCity = SharedPreferenceUtil.getInstance().getString("city_1", ""); - break; - case CITY_NUM_2: - cCity = SharedPreferenceUtil.getInstance().getString("city_2", ""); - break; - case CITY_NUM_3: - cCity = SharedPreferenceUtil.getInstance().getString("city_3", ""); - break; - case CITY_NUM_4: - cCity = SharedPreferenceUtil.getInstance().getString("city_4", ""); - break; - case CITY_NUM_5: - cCity = SharedPreferenceUtil.getInstance().getString("city_5", ""); - break; - }*/ -// String cCity = SharedPreferenceUtil.getInstance().getString("city_1", ""); if (!"".equals(cCity) && cCity != null)//判断SharedPreference中存储的是否为空,即如果第一次执行程序不会变为空值进行初始赋值 { mCityStr = cCity; -// safeSetTitle(mCityStr); } mNoData.setVisibility(View.GONE); @@ -406,26 +317,6 @@ public void onClick(View v) { } cursor.close(); String cCity = cityList.get(mCityNum); - Log.d("MultiCityFragmenthuang", " setListener " + cCity + " " + mCityNum); -// String cCity = ""; - /*switch (mCityNum + 1) { - case CITY_NUM_1: - cCity = SharedPreferenceUtil.getInstance().getString("city_1", ""); - break; - case CITY_NUM_2: - cCity = SharedPreferenceUtil.getInstance().getString("city_2", ""); - break; - case CITY_NUM_3: - cCity = SharedPreferenceUtil.getInstance().getString("city_3", ""); - break; - case CITY_NUM_4: - cCity = SharedPreferenceUtil.getInstance().getString("city_4", ""); - break; - case CITY_NUM_5: - cCity = SharedPreferenceUtil.getInstance().getString("city_5", ""); - break; - }*/ -// String Ccity = SharedPreferenceUtil.getInstance().getString("city_1", ""); if (!cCity.equals(mCityStr)) { mCityStr = cCity; new Thread(new Runnable() { @@ -493,18 +384,11 @@ public void getWeather() { int i = 0; mRecycleView.setAdapter(mWeatherAdapter = new WeatherAdapter(mWeather)); mGCityStr = mWeather.getBasic().getCity(); - /*if (!mGCityStr.equals("")) { -// safeSetTitle(mGCityStr); - }*/ - /*Intent intent = new Intent(getActivity(), AutoUpdateService.class); - getActivity().startService(intent);*/ } catch (Exception e) { e.printStackTrace(); mWeatherInfo.setVisibility(View.GONE); mNoData.setVisibility(View.VISIBLE); -// Toast.makeText(getActivity(), " 定位失败,请手动输入城市", Toast.LENGTH_LONG).show(); } -// Toast.makeText(getActivity(), "加载完毕,✺◟(∗❛ัᴗ❛ั∗)◞✺,", Toast.LENGTH_SHORT).show(); } public void safeSetTitle(String title) { From 230c1d23f8628d2ca02085795f2a847c2a9053ff Mon Sep 17 00:00:00 2001 From: huangshaohua Date: Sat, 17 Jun 2017 15:16:58 +0800 Subject: [PATCH 13/19] =?UTF-8?q?=E8=A7=A3=E5=86=B3=E4=BA=86=E4=B8=BB?= =?UTF-8?q?=E5=9F=8E=E5=B8=82=E6=83=85=E5=86=B5=E4=B8=8B=E9=9C=80=E8=A6=81?= =?UTF-8?q?=E4=BA=8C=E6=AC=A1=E5=88=B7=E6=96=B0=E6=89=8D=E4=BC=9A=E6=9B=B4?= =?UTF-8?q?=E6=94=B9=E6=A0=87=E9=A2=98=E5=9F=8E=E5=B8=82=E5=90=8D=E7=9A=84?= =?UTF-8?q?=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../com/example/owen/weathergo/activity/WeatherMain.java | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/app/src/main/java/com/example/owen/weathergo/activity/WeatherMain.java b/app/src/main/java/com/example/owen/weathergo/activity/WeatherMain.java index cba0bc2..ae28d3d 100644 --- a/app/src/main/java/com/example/owen/weathergo/activity/WeatherMain.java +++ b/app/src/main/java/com/example/owen/weathergo/activity/WeatherMain.java @@ -88,7 +88,6 @@ public class WeatherMain extends AppCompatActivity @BindView(R.id.tabLayout) TabLayout mTabLayout; - private ActionBarDrawerToggle mDrawerToggle; private Handler mHandler; private HomePagerAdapter mHomePagerAdapter; @@ -308,6 +307,10 @@ public void onYesClick() { mTabLayout.setupWithViewPager(mViewPager, false); } mViewPager.setCurrentItem(mPageNum); + if (mThisPage.equals(C.Tag_CITY_0)) { + //在主界面情况下,直接刷新为新城市名 + safeSetTitle(SharedPreferenceUtil.getInstance().getCityName()); + } dialog.dismiss(); } }); @@ -547,7 +550,7 @@ public boolean onNavigationItemSelected(@NonNull MenuItem menuItem) { //初始化抽屉 public void initDrawer() { - mDrawerToggle = new ActionBarDrawerToggle(this, mDrawerLayout, mToolBar, R.string.open, R.string.close); + ActionBarDrawerToggle mDrawerToggle = new ActionBarDrawerToggle(this, mDrawerLayout, mToolBar, R.string.open, R.string.close); mDrawerToggle.syncState(); //mDrawerLayout.setDrawerListener(mDrawerToggle); //旧版本可能会空指针 From 007e87c957170eb6ed1c86b5ba099373791c0522 Mon Sep 17 00:00:00 2001 From: huangshaohua Date: Sat, 17 Jun 2017 15:53:13 +0800 Subject: [PATCH 14/19] =?UTF-8?q?=E6=8F=90=E5=8F=96=E9=87=8D=E5=A4=8D?= =?UTF-8?q?=E4=BB=A3=E7=A0=81=E5=88=9B=E5=BB=BAsyncCity()=E5=92=8CupdateCi?= =?UTF-8?q?ty()?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../owen/weathergo/activity/WeatherMain.java | 251 ++++++------------ 1 file changed, 76 insertions(+), 175 deletions(-) diff --git a/app/src/main/java/com/example/owen/weathergo/activity/WeatherMain.java b/app/src/main/java/com/example/owen/weathergo/activity/WeatherMain.java index ae28d3d..e821f29 100644 --- a/app/src/main/java/com/example/owen/weathergo/activity/WeatherMain.java +++ b/app/src/main/java/com/example/owen/weathergo/activity/WeatherMain.java @@ -113,34 +113,8 @@ protected void onStart() { //防止刷新后城市顺序混乱出现title错误的现象 int cityNum = getIntent().getIntExtra("city_num", -1); int pageNum = getIntent().getIntExtra("which_page", -1); - //如果在MultiCitiesManagerActivity中没有返回而是点击了其中一个城市进行跳转 - //就不会出发回调函数; - mHomePagerAdapter = new HomePagerAdapter(getSupportFragmentManager()); - mF = new MainFragment(); - mHomePagerAdapter.addTab(mF, SharedPreferenceUtil.getInstance().getCityName()); - cityList.clear(); - DBManager.getInstance().openDatabase(DBManager.WEATHER_DB_NAME); - final SQLiteDatabase db = DBManager.getInstance().getDatabase(); - Cursor cursor = db.rawQuery("select city from MultiCities", null); - if (cursor.moveToFirst()) { - do { - //遍历cursor - String city = cursor.getString(cursor.getColumnIndex("city")); - cityList.add(city); - } while (cursor.moveToNext()); - } - cursor.close(); - int mCityCount = (int) DBManager.getInstance().allCaseNum("MultiCities"); - DBManager.getInstance().closeDatabase(); - if (mCityCount != 0) { - for (int i = 0; i < mCityCount; i++) { - MultiCityFragment mft = MultiCityFragment.newInstance(i, cityList.get(i)); - mHomePagerAdapter.addTab(mft, cityList.get(i)); - - } - mViewPager.setAdapter(mHomePagerAdapter); - mTabLayout.setupWithViewPager(mViewPager, false); - } + //如果在MultiCitiesManagerActivity中没有返回而是点击了其中一个城市进行跳转就不会触发回调函数; + syncCity(); mViewPager.setCurrentItem(cityNum + 1); if (pageNum > -1) { mViewPager.setCurrentItem(pageNum); @@ -245,67 +219,8 @@ public void toSearchDialog() { dialog.setYesOnclickListener("确定", new CityDialog.onYesOnclickListener() { @Override public void onYesClick() { - DBManager.getInstance().openDatabase(DBManager.WEATHER_DB_NAME); - final SQLiteDatabase db = DBManager.getInstance().getDatabase(); - Cursor cursor = db.rawQuery("select city from MultiCities", null); - ContentValues values = new ContentValues(); - values.put("city", dialog.mCityEdit.getText().toString()); - switch (mThisPage) { - case C.Tag_CITY_0: - SharedPreferenceUtil.getInstance() - .setCityName(dialog.mCityEdit.getText().toString()); - //城市0 主城市 - break; - case C.Tag_CITY_1: - db.update("MultiCities", values, "city = ?", new String[]{ - cityList.get(0) - }); - break; - case C.Tag_CITY_2: - db.update("MultiCities", values, "city = ?", new String[]{ - cityList.get(1) - }); - break; - case C.Tag_CITY_3: - db.update("MultiCities", values, "city = ?", new String[]{ - cityList.get(2) - }); - break; - case C.Tag_CITY_4: - db.update("MultiCities", values, "city = ?", new String[]{ - cityList.get(3) - }); - break; - case C.Tag_CITY_5: - db.update("MultiCities", values, "city = ?", new String[]{ - cityList.get(4) - }); - break; - default: - } - - mHomePagerAdapter = new HomePagerAdapter(getSupportFragmentManager()); - mF = new MainFragment(); - mHomePagerAdapter.addTab(mF, SharedPreferenceUtil.getInstance().getCityName()); - cityList.clear(); - if (cursor.moveToFirst()) { - do { - //遍历cursor - String city = cursor.getString(cursor.getColumnIndex("city")); - cityList.add(city); - } while (cursor.moveToNext()); - } - cursor.close(); - int mCityCount = (int) DBManager.getInstance().allCaseNum("MultiCities"); - DBManager.getInstance().closeDatabase(); - if (mCityCount != 0) { - for (int i = 0; i < mCityCount; i++) { - MultiCityFragment mft = MultiCityFragment.newInstance(i, cityList.get(i)); - mHomePagerAdapter.addTab(mft, cityList.get(i)); - } - mViewPager.setAdapter(mHomePagerAdapter); - mTabLayout.setupWithViewPager(mViewPager, false); - } + updateCity(dialog.mCityEdit.getText().toString(), mThisPage); + syncCity(); mViewPager.setCurrentItem(mPageNum); if (mThisPage.equals(C.Tag_CITY_0)) { //在主界面情况下,直接刷新为新城市名 @@ -339,73 +254,84 @@ private void toAddDialog() { startActivityForResult(intent, 2); } + private void syncCity() { + mHomePagerAdapter = new HomePagerAdapter(getSupportFragmentManager()); + mF = new MainFragment(); + mHomePagerAdapter.addTab(mF, SharedPreferenceUtil.getInstance().getCityName()); + cityList.clear(); + DBManager.getInstance().openDatabase(DBManager.WEATHER_DB_NAME); + final SQLiteDatabase db = DBManager.getInstance().getDatabase(); + Cursor cursor = db.rawQuery("select city from MultiCities", null); + if (cursor.moveToFirst()) { + do { + //遍历cursor + String city = cursor.getString(cursor.getColumnIndex("city")); + cityList.add(city); + } while (cursor.moveToNext()); + } + cursor.close(); + int mCityCount = (int) DBManager.getInstance().allCaseNum("MultiCities"); + DBManager.getInstance().closeDatabase(); + if (mCityCount != 0) { + for (int i = 0; i < mCityCount; i++) { + MultiCityFragment mft = MultiCityFragment.newInstance(i, cityList.get(i)); + mHomePagerAdapter.addTab(mft, cityList.get(i)); + } + mViewPager.setAdapter(mHomePagerAdapter); + mTabLayout.setupWithViewPager(mViewPager, false); + } + } + + private void updateCity(String city, String page) { + DBManager.getInstance().openDatabase(DBManager.WEATHER_DB_NAME); + final SQLiteDatabase db = DBManager.getInstance().getDatabase(); + Cursor cursor = db.rawQuery("select city from MultiCities", null); + ContentValues values = new ContentValues(); + values.put("city", city); + switch (page) { + case C.Tag_CITY_0: + SharedPreferenceUtil.getInstance() + .setCityName(city); + //城市0 主城市 + break; + case C.Tag_CITY_1: + db.update("MultiCities", values, "city = ?", new String[]{ + cityList.get(0) + }); + break; + case C.Tag_CITY_2: + db.update("MultiCities", values, "city = ?", new String[]{ + cityList.get(1) + }); + break; + case C.Tag_CITY_3: + db.update("MultiCities", values, "city = ?", new String[]{ + cityList.get(2) + }); + break; + case C.Tag_CITY_4: + db.update("MultiCities", values, "city = ?", new String[]{ + cityList.get(3) + }); + break; + case C.Tag_CITY_5: + db.update("MultiCities", values, "city = ?", new String[]{ + cityList.get(4) + }); + break; + default: + } + } + + @Override protected void onActivityResult(int requestCode, int resultCode, Intent data) { super.onActivityResult(requestCode, resultCode, data); switch (requestCode) { case 2: if (resultCode == RESULT_OK) { - mHomePagerAdapter = new HomePagerAdapter(getSupportFragmentManager()); - MainFragment mf = new MainFragment(); - mHomePagerAdapter.addTab(mf, SharedPreferenceUtil.getInstance().getCityName()); - cityList.clear(); - DBManager.getInstance().openDatabase(DBManager.WEATHER_DB_NAME); - final SQLiteDatabase db = DBManager.getInstance().getDatabase(); - Cursor cursor = db.rawQuery("select city from MultiCities", null); - if (cursor.moveToFirst()) { - do { - //遍历cursor - String city = cursor.getString(cursor.getColumnIndex("city")); - cityList.add(city); - } while (cursor.moveToNext()); - } - cursor.close(); - int mCityCount = (int) DBManager.getInstance().allCaseNum("MultiCities"); - DBManager.getInstance().closeDatabase(); - if (mCityCount != 0) { - for (int i = 0; i < mCityCount; i++) { - MultiCityFragment mtf = MultiCityFragment.newInstance(i, cityList.get(i)); - mHomePagerAdapter.addTab(mtf, cityList.get(i)); - } - } - - mViewPager.setAdapter(mHomePagerAdapter); - if (mCityCount != 0) { - mTabLayout.setupWithViewPager(mViewPager, false); - } - } - break; - case 3: - if (resultCode == RESULT_OK) { - mHomePagerAdapter = new HomePagerAdapter(getSupportFragmentManager()); - MainFragment mf = new MainFragment(); - mHomePagerAdapter.addTab(mf, SharedPreferenceUtil.getInstance().getCityName()); - cityList.clear(); - DBManager.getInstance().openDatabase(DBManager.WEATHER_DB_NAME); - final SQLiteDatabase db = DBManager.getInstance().getDatabase(); - Cursor cursor = db.rawQuery("select city from MultiCities", null); - if (cursor.moveToFirst()) { - do { - //遍历cursor - String city = cursor.getString(cursor.getColumnIndex("city")); - cityList.add(city); - } while (cursor.moveToNext()); - } - cursor.close(); - int mCityCount = (int) DBManager.getInstance().allCaseNum("MultiCities"); - DBManager.getInstance().closeDatabase(); - if (mCityCount != 0) { - for (int i = 0; i < mCityCount; i++) { - MultiCityFragment mtf = MultiCityFragment.newInstance(i, cityList.get(i)); - mHomePagerAdapter.addTab(mtf, cityList.get(i)); - } - } - mViewPager.setAdapter(mHomePagerAdapter); - if (mCityCount != 0) { - mTabLayout.setupWithViewPager(mViewPager, false); - } + syncCity(); } - mViewPager.setCurrentItem(data.getIntExtra("which_page", 0)); break; default: break; @@ -436,32 +362,7 @@ public void init() { setSupportActionBar(mToolBar); initDrawer(); initNavigationView(); - mHomePagerAdapter = new HomePagerAdapter(getSupportFragmentManager()); - MainFragment mf = new MainFragment(); - mHomePagerAdapter.addTab(mf, SharedPreferenceUtil.getInstance().getCityName()); - DBManager.getInstance().openDatabase(DBManager.WEATHER_DB_NAME); - final SQLiteDatabase db = DBManager.getInstance().getDatabase(); - Cursor cursor = db.rawQuery("select city from MultiCities", null); - if (cursor.moveToFirst()) { - do { - //遍历cursor - String city = cursor.getString(cursor.getColumnIndex("city")); - cityList.add(city); - } while (cursor.moveToNext()); - } - cursor.close(); - int mCityCount = (int) DBManager.getInstance().allCaseNum("MultiCities"); - DBManager.getInstance().closeDatabase(); - if (mCityCount != 0) { - for (int i = 0; i < mCityCount; i++) { - MultiCityFragment mtf = MultiCityFragment.newInstance(i, cityList.get(i)); - mHomePagerAdapter.addTab(mtf, cityList.get(i)); - } - } - mViewPager.setAdapter(mHomePagerAdapter); - if (mCityCount != 0) { - mTabLayout.setupWithViewPager(mViewPager, false); - } + syncCity(); String cCity = SharedPreferenceUtil.getInstance().getCityName(); if ("".equals(cCity) || cCity == null)//判断SharedPreference中存储的是否为空,即如果第一次执行程序不会变为空值进行初始赋值 { From 6c215e000656b48e666824cbba31d7f405d408c1 Mon Sep 17 00:00:00 2001 From: huangshaohua Date: Sat, 17 Jun 2017 16:18:17 +0800 Subject: [PATCH 15/19] =?UTF-8?q?=E6=8F=90=E5=8F=96=E9=87=8D=E5=A4=8D?= =?UTF-8?q?=E4=BB=A3=E7=A0=81=E5=88=9B=E5=BB=BAsyncCity()=E5=92=8CupdateCi?= =?UTF-8?q?ty()?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../activity/ChoiceCityActivity.java | 146 ++++++++---------- .../activity/MultiCitiesManagerActivity.java | 3 +- .../owen/weathergo/activity/WeatherMain.java | 1 + .../modules/fragment/MainFragment.java | 4 +- .../modules/fragment/MultiCityFragment.java | 8 +- 5 files changed, 73 insertions(+), 89 deletions(-) diff --git a/app/src/main/java/com/example/owen/weathergo/activity/ChoiceCityActivity.java b/app/src/main/java/com/example/owen/weathergo/activity/ChoiceCityActivity.java index f1244a4..f7ce0bc 100644 --- a/app/src/main/java/com/example/owen/weathergo/activity/ChoiceCityActivity.java +++ b/app/src/main/java/com/example/owen/weathergo/activity/ChoiceCityActivity.java @@ -11,16 +11,16 @@ import android.support.v7.app.AppCompatActivity; import android.support.v7.widget.LinearLayoutManager; import android.support.v7.widget.RecyclerView; -import android.util.Log; import android.view.View; import com.example.owen.weathergo.R; +import com.example.owen.weathergo.common.base.C; +import com.example.owen.weathergo.modules.adapter.CityAdapter; +import com.example.owen.weathergo.modules.domain.City; +import com.example.owen.weathergo.modules.domain.Province; import com.example.owen.weathergo.util.DBManager; import com.example.owen.weathergo.util.SharedPreferenceUtil; import com.example.owen.weathergo.util.WeatherDB; -import com.example.owen.weathergo.modules.domain.City; -import com.example.owen.weathergo.modules.domain.Province; -import com.example.owen.weathergo.modules.adapter.CityAdapter; import java.util.ArrayList; import java.util.List; @@ -46,14 +46,7 @@ public class ChoiceCityActivity extends AppCompatActivity { private String what_to_do;//从那个页面过来,多城市管理、主天气页面 private String which_city; private int currentLevel; - private static final String Tag_CITY_0 = "city_0_fragment"; - private static final String Tag_CITY_1 = "city_1_fragment"; - private static final String Tag_CITY_2 = "city_2_fragment"; - private static final String Tag_CITY_3 = "city_3_fragment"; - private static final String Tag_CITY_4 = "city_4_fragment"; - private static final String Tag_CITY_5 = "city_5_fragment"; -// private boolean isChecked = false; @RequiresApi(api = Build.VERSION_CODES.JELLY_BEAN) @Override @@ -73,9 +66,7 @@ protected void onStart() { what_to_do = intent.getStringExtra("what_to_do"); which_city = ("".equals(intent.getStringExtra("which_city")) || intent.getStringExtra("which_city") == null) - ? Tag_CITY_0 : intent.getStringExtra("which_city"); - Log.d("ChoiceCityActivityhuang ", " onStart which_city : " + which_city); - Log.d("ChoiceCityActivityhuang ", " onStart what_to_do : " + what_to_do); + ? C.Tag_CITY_0 : intent.getStringExtra("which_city"); } private void init() { @@ -99,74 +90,12 @@ public void onItemClick(View view, int pos) { } else if (currentLevel == LEVEL_CITY) { selectedCity = cityList.get(pos); if ("select_multi_city".equals(what_to_do)) { -// Log.d("ChoiceCityActivityhuang", " onclick " + selectedCity.getCityName()); Intent intent = new Intent(); intent.putExtra("select_multi_city", selectedCity.getCityName()); setResult(RESULT_OK, intent); } else if (!"".equals(which_city)) { - Intent intent = new Intent(); - intent.setClass(ChoiceCityActivity.this, WeatherMain.class); - DBManager.getInstance().openDatabase(DBManager.WEATHER_DB_NAME); - final SQLiteDatabase db = DBManager.getInstance().getDatabase(); - Cursor cursor = db.rawQuery("select city from MultiCities", null); - ArrayList cityList = new ArrayList<>(); - if (cursor.moveToFirst()) { - do { - //遍历cursor - String city = cursor.getString(cursor.getColumnIndex("city")); - cityList.add(city); - } while (cursor.moveToNext()); - } - cursor.close(); - ContentValues values = new ContentValues(); - values.put("city", selectedCity.getCityName()); - if (which_city != null) - switch (which_city) { - case Tag_CITY_0: - SharedPreferenceUtil.getInstance() - .setCityName(selectedCity.getCityName()); - //城市0 主城市 - intent.putExtra("which_page", 0); - break; - case Tag_CITY_1: -// String city = cityList.get(0); - db.update("MultiCities", values, "city = ?", new String[]{ - cityList.get(0) - }); - intent.putExtra("which_page", 1); - break; - case Tag_CITY_2: - db.update("MultiCities", values, "city = ?", new String[]{ - cityList.get(1) - }); - intent.putExtra("which_page", 2); -// String city = cityList.get(1); - break; - case Tag_CITY_3: - db.update("MultiCities", values, "city = ?", new String[]{ - cityList.get(2) - }); - intent.putExtra("which_page", 3); - break; - case Tag_CITY_4: - db.update("MultiCities", values, "city = ?", new String[]{ - cityList.get(3) - }); - intent.putExtra("which_page", 4); - break; - case Tag_CITY_5: - db.update("MultiCities", values, "city = ?", new String[]{ - cityList.get(4) - }); - intent.putExtra("which_page", 5); - break; - default: - } -// setResult(RESULT_OK, intent); - DBManager.getInstance().closeDatabase(); - startActivity(intent); + updateCity(); } -// finish(); quit(); } @@ -180,6 +109,66 @@ private void quit() { overridePendingTransition(android.R.anim.fade_in, android.R.anim.fade_out); } + private void updateCity() { + Intent intent = new Intent(); + intent.setClass(ChoiceCityActivity.this, WeatherMain.class); + DBManager.getInstance().openDatabase(DBManager.WEATHER_DB_NAME); + final SQLiteDatabase db = DBManager.getInstance().getDatabase(); + Cursor cursor = db.rawQuery("select city from MultiCities", null); + ArrayList cityList = new ArrayList<>(); + if (cursor.moveToFirst()) { + do { + //遍历cursor + String city = cursor.getString(cursor.getColumnIndex("city")); + cityList.add(city); + } while (cursor.moveToNext()); + } + cursor.close(); + ContentValues values = new ContentValues(); + values.put("city", selectedCity.getCityName()); + if (which_city != null) + switch (which_city) { + case C.Tag_CITY_0: + SharedPreferenceUtil.getInstance() + .setCityName(selectedCity.getCityName()); + //城市0 主城市 + intent.putExtra("which_page", 0); + break; + case C.Tag_CITY_1: + db.update("MultiCities", values, "city = ?", new String[]{ + cityList.get(0) + }); + intent.putExtra("which_page", 1); + break; + case C.Tag_CITY_2: + db.update("MultiCities", values, "city = ?", new String[]{ + cityList.get(1) + }); + intent.putExtra("which_page", 2); + break; + case C.Tag_CITY_3: + db.update("MultiCities", values, "city = ?", new String[]{ + cityList.get(2) + }); + intent.putExtra("which_page", 3); + break; + case C.Tag_CITY_4: + db.update("MultiCities", values, "city = ?", new String[]{ + cityList.get(3) + }); + intent.putExtra("which_page", 4); + break; + case C.Tag_CITY_5: + db.update("MultiCities", values, "city = ?", new String[]{ + cityList.get(4) + }); + intent.putExtra("which_page", 5); + break; + default: + } + DBManager.getInstance().closeDatabase(); + startActivity(intent); + } @RequiresApi(api = Build.VERSION_CODES.JELLY_BEAN) public void queryCities(int ProId) { @@ -202,9 +191,7 @@ public void queryProvince() { DBManager.getInstance().openDatabase(); provincesList.addAll(WeatherDB.loadProvinces(DBManager.getInstance().getDatabase())); DBManager.getInstance().closeDatabase(); - dataList.clear(); - for (Province province : provincesList) { dataList.add(province.getProName()); } @@ -219,7 +206,6 @@ public void queryProvince() { @RequiresApi(api = Build.VERSION_CODES.JELLY_BEAN) @Override public void onBackPressed() { -// super.onBackPressed(); //重写onBackPressed()方法需要将super.onBackPressed()注释掉,不然无论执行什么都会默认执行这一句而退出 if (currentLevel == LEVEL_PROVINCE) { finish(); diff --git a/app/src/main/java/com/example/owen/weathergo/activity/MultiCitiesManagerActivity.java b/app/src/main/java/com/example/owen/weathergo/activity/MultiCitiesManagerActivity.java index 5701ac4..11d28c0 100644 --- a/app/src/main/java/com/example/owen/weathergo/activity/MultiCitiesManagerActivity.java +++ b/app/src/main/java/com/example/owen/weathergo/activity/MultiCitiesManagerActivity.java @@ -40,7 +40,6 @@ public class MultiCitiesManagerActivity extends AppCompatActivity { private ArrayList cityList = new ArrayList<>(); private MultiCityAdapter mAdapter; private int mCityCount; - private String mResultCity; @Override public void onCreate(@Nullable Bundle savedInstanceState) { @@ -189,7 +188,7 @@ protected void onActivityResult(int requestCode, int resultCode, Intent data) { case 1: if (resultCode == RESULT_OK) { Boolean addData = true; - mResultCity = data.getStringExtra("select_multi_city"); + String mResultCity = data.getStringExtra("select_multi_city"); if (!"".equals(mResultCity) && mResultCity != null) { DBManager.getInstance().openDatabase(DBManager.WEATHER_DB_NAME); final ContentValues values = new ContentValues(); diff --git a/app/src/main/java/com/example/owen/weathergo/activity/WeatherMain.java b/app/src/main/java/com/example/owen/weathergo/activity/WeatherMain.java index e821f29..7cdad39 100644 --- a/app/src/main/java/com/example/owen/weathergo/activity/WeatherMain.java +++ b/app/src/main/java/com/example/owen/weathergo/activity/WeatherMain.java @@ -321,6 +321,7 @@ private void updateCity(String city, String page) { break; default: } + DBManager.getInstance().closeDatabase(); } diff --git a/app/src/main/java/com/example/owen/weathergo/modules/fragment/MainFragment.java b/app/src/main/java/com/example/owen/weathergo/modules/fragment/MainFragment.java index ea618e1..f5eff48 100644 --- a/app/src/main/java/com/example/owen/weathergo/modules/fragment/MainFragment.java +++ b/app/src/main/java/com/example/owen/weathergo/modules/fragment/MainFragment.java @@ -85,7 +85,7 @@ public void handleMessage(Message msg) { } break; - case SEARCH_CITY: + /*case SEARCH_CITY: if (msg.getData().getString("which_page").equals(C.Tag_CITY_0)) { //Fragment与activity交互http://blog.csdn.net/huangyabin001/article/details/35231753 if (!msg.obj.toString().equals("")) { @@ -108,7 +108,7 @@ public void run() { //请手动选择城市 } } - break; + break;*/ case SCREEN_SHOOT: /** * 动态获取权限,Android 6.0 新特性,一些保护权限,除了要在AndroidManifest中声明权限,还要使用如下代码动态获取 diff --git a/app/src/main/java/com/example/owen/weathergo/modules/fragment/MultiCityFragment.java b/app/src/main/java/com/example/owen/weathergo/modules/fragment/MultiCityFragment.java index 7a3873f..2bd267a 100644 --- a/app/src/main/java/com/example/owen/weathergo/modules/fragment/MultiCityFragment.java +++ b/app/src/main/java/com/example/owen/weathergo/modules/fragment/MultiCityFragment.java @@ -1,6 +1,5 @@ package com.example.owen.weathergo.modules.fragment; -import android.content.ContentValues; import android.database.Cursor; import android.database.sqlite.SQLiteDatabase; import android.graphics.Bitmap; @@ -68,7 +67,6 @@ public class MultiCityFragment extends Fragment { WeatherAdapter mWeatherAdapter; private int mCityNum; private String mCityStr = "";//设置的CityName - private String mGCityStr = "";//从和风天气查询到的城市名称CityName,理论上和设置的一样 private View view; private boolean mIsCreateView = false; private WeatherMain mActivity; @@ -89,7 +87,7 @@ public void handleMessage(Message msg) { } break; - case SEARCH_CITY: + /*case SEARCH_CITY: //Fragment与activity交互http://blog.csdn.net/huangyabin001/article/details/35231753 if (!msg.obj.toString().equals("")) { if (mThisPage.equals(msg.getData().getString("which_page"))) { @@ -130,7 +128,7 @@ public void run() { //请手动选择城市 } } - break; + break;*/ case SCREEN_SHOOT: /** * 动态获取权限,Android 6.0 新特性,一些保护权限,除了要在AndroidManifest中声明权限,还要使用如下代码动态获取 @@ -383,7 +381,7 @@ public void getWeather() { mWeather = JSONUtil.getInstance().getWeather(getActivity(), mCityStr, mCityNum + 1); int i = 0; mRecycleView.setAdapter(mWeatherAdapter = new WeatherAdapter(mWeather)); - mGCityStr = mWeather.getBasic().getCity(); + String mGCityStr = mWeather.getBasic().getCity(); } catch (Exception e) { e.printStackTrace(); mWeatherInfo.setVisibility(View.GONE); From cba24d9a926d929fca4579c28d71a7c2d92a5649 Mon Sep 17 00:00:00 2001 From: huangshaohua Date: Sat, 17 Jun 2017 17:26:43 +0800 Subject: [PATCH 16/19] =?UTF-8?q?=E4=BF=AE=E5=A4=8D=E4=BA=86beta=E7=89=88?= =?UTF-8?q?=E4=B8=AD=E5=87=BA=E7=8E=B0=E7=9A=84=E9=A6=96=E6=AC=A1=E5=AE=89?= =?UTF-8?q?=E8=A3=85app=E6=97=B6=E5=8F=91=E7=94=9F=E7=9A=84=E4=B8=8D?= =?UTF-8?q?=E8=83=BD=E5=8A=A0=E8=BD=BDMainFragment=E7=9A=84=E4=B8=A5?= =?UTF-8?q?=E9=87=8Dbug=EF=BC=9B=20bug=E7=B3=BB=E5=87=BA=E4=B8=8Ebeta?= =?UTF-8?q?=E7=89=88=E5=AF=B9dev=E7=89=88=E4=B8=AD=E4=BB=A3=E7=A0=81?= =?UTF-8?q?=E9=9A=8F=E6=84=8F=E6=9B=B4=E6=94=B9=E5=BC=95=E8=B5=B7=E7=9A=84?= =?UTF-8?q?=EF=BC=9B=E6=9B=B4=E6=94=B9=E9=9C=80=E8=B0=A8=E6=85=8E?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/build.gradle | 2 +- .../owen/weathergo/activity/WeatherMain.java | 15 ++--- .../modules/fragment/MainFragment.java | 56 +++++++++++-------- 3 files changed, 40 insertions(+), 33 deletions(-) diff --git a/app/build.gradle b/app/build.gradle index 168190d..ca69ff6 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -18,7 +18,7 @@ android { minSdkVersion 15 targetSdkVersion 24 versionCode 10 - versionName '1.4.01.3141dev' + versionName '1.4.02.3246beta' testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner" vectorDrawables.useSupportLibrary = true /*jackOptions { diff --git a/app/src/main/java/com/example/owen/weathergo/activity/WeatherMain.java b/app/src/main/java/com/example/owen/weathergo/activity/WeatherMain.java index 7cdad39..9192cb1 100644 --- a/app/src/main/java/com/example/owen/weathergo/activity/WeatherMain.java +++ b/app/src/main/java/com/example/owen/weathergo/activity/WeatherMain.java @@ -23,6 +23,7 @@ import android.support.v7.app.ActionBarDrawerToggle; import android.support.v7.app.AppCompatActivity; import android.support.v7.widget.Toolbar; +import android.util.Log; import android.view.Menu; import android.view.MenuInflater; import android.view.MenuItem; @@ -68,9 +69,6 @@ public class WeatherMain extends AppCompatActivity private static String mThisPage = C.Tag_CITY_0; private static int mPageNum; - MultiCityFragment[] mFt; - MainFragment mF; - public LocationClient mLocationClient; ArrayList cityList = new ArrayList<>(); @@ -256,8 +254,9 @@ private void toAddDialog() { private void syncCity() { mHomePagerAdapter = new HomePagerAdapter(getSupportFragmentManager()); - mF = new MainFragment(); - mHomePagerAdapter.addTab(mF, SharedPreferenceUtil.getInstance().getCityName()); + MainFragment mf = new MainFragment(); + Log.d("WeatherMainhuang", " syncCity "+mf); + mHomePagerAdapter.addTab(mf, SharedPreferenceUtil.getInstance().getCityName()); cityList.clear(); DBManager.getInstance().openDatabase(DBManager.WEATHER_DB_NAME); final SQLiteDatabase db = DBManager.getInstance().getDatabase(); @@ -277,9 +276,9 @@ private void syncCity() { MultiCityFragment mft = MultiCityFragment.newInstance(i, cityList.get(i)); mHomePagerAdapter.addTab(mft, cityList.get(i)); } - mViewPager.setAdapter(mHomePagerAdapter); mTabLayout.setupWithViewPager(mViewPager, false); } + mViewPager.setAdapter(mHomePagerAdapter); } private void updateCity(String city, String page) { @@ -359,7 +358,6 @@ public void init() { getWindow().addFlags(WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS); //使导航栏透明getWindow().addFlags(WindowManager.LayoutParams.FLAG_TRANSLUCENT_NAVIGATION); } - setSupportActionBar(mToolBar); initDrawer(); initNavigationView(); @@ -374,7 +372,6 @@ public void init() { private void initLocation() { mLocationClient = new LocationClient(getApplicationContext()); mLocationClient.registerLocationListener(new MyLocationListener()); - /*RxPermissions rxPermissions = new RxPermissions(WeatherMain.this); rxPermissions .request(Manifest.permission.ACCESS_FINE_LOCATION) @@ -523,7 +520,7 @@ public void onReceiveLocation(BDLocation bdLocation) { Message msg = new Message(); msg.obj = bdLocation.getCity() + ""; msg.what = SEARCH_CITY; -// Log.d("search_weather_data", "" + bdLocation.getCity()); + Log.d("search_weather_data", "" + bdLocation.getCity()); mHandler.sendMessage(msg); } } diff --git a/app/src/main/java/com/example/owen/weathergo/modules/fragment/MainFragment.java b/app/src/main/java/com/example/owen/weathergo/modules/fragment/MainFragment.java index f5eff48..41936da 100644 --- a/app/src/main/java/com/example/owen/weathergo/modules/fragment/MainFragment.java +++ b/app/src/main/java/com/example/owen/weathergo/modules/fragment/MainFragment.java @@ -1,5 +1,7 @@ package com.example.owen.weathergo.modules.fragment; +import android.app.Activity; +import android.content.Context; import android.content.Intent; import android.graphics.Bitmap; import android.os.Build; @@ -14,6 +16,7 @@ import android.support.v7.app.AppCompatActivity; import android.support.v7.widget.LinearLayoutManager; import android.support.v7.widget.RecyclerView; +import android.util.Log; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; @@ -85,30 +88,28 @@ public void handleMessage(Message msg) { } break; - /*case SEARCH_CITY: - if (msg.getData().getString("which_page").equals(C.Tag_CITY_0)) { - //Fragment与activity交互http://blog.csdn.net/huangyabin001/article/details/35231753 - if (!msg.obj.toString().equals("")) { - mCityStr = msg.obj.toString(); - SharedPreferenceUtil.getInstance().setCityName(mCityStr); - new Thread(new Runnable() { - @Override - public void run() { - mWeather = JSONUtil.getInstance().getWeather(getActivity(), mCityStr); - Message message = new Message(); - message.what = UPDATE_WEATHER_DATA; - mHandler.sendMessage(message); - } - }).start(); - } else { - Message message = new Message(); - message.what = CHANGE_TEXT; - message.obj = "no_city_data"; - mHandler.sendMessage(message); - //请手动选择城市 - } + case SEARCH_CITY: + //Fragment与activity交互http://blog.csdn.net/huangyabin001/article/details/35231753 + if (!msg.obj.toString().equals("")) { + mCityStr = msg.obj.toString(); + SharedPreferenceUtil.getInstance().setCityName(mCityStr); + new Thread(new Runnable() { + @Override + public void run() { + mWeather = JSONUtil.getInstance().getWeather(getActivity(), mCityStr); + Message message = new Message(); + message.what = UPDATE_WEATHER_DATA; + mHandler.sendMessage(message); + } + }).start(); + } else { + Message message = new Message(); + message.what = CHANGE_TEXT; + message.obj = "no_city_data"; + mHandler.sendMessage(message); + //请手动选择城市 } - break;*/ + break; case SCREEN_SHOOT: /** * 动态获取权限,Android 6.0 新特性,一些保护权限,除了要在AndroidManifest中声明权限,还要使用如下代码动态获取 @@ -132,10 +133,19 @@ public void run() { } }; + + @Override + public void onAttach(Activity activity) { + mActivity = (WeatherMain) activity; + mActivity.setHandler(mHandler); + super.onAttach(activity); + } + @Override public void onCreate(@Nullable Bundle savedInstanceState) { super.onCreate(savedInstanceState); mToastSuccess = 0; + Log.d("MainFragmenthuang"," onCreate"); } //@Nullable 表示定义的字段可以为空. From 8ffff8782099e4b96d0651e7c8e571adf9811b6b Mon Sep 17 00:00:00 2001 From: huangshaohua Date: Sat, 17 Jun 2017 17:27:51 +0800 Subject: [PATCH 17/19] =?UTF-8?q?=E5=88=A0=E9=99=A4=E6=8E=89DBManager?= =?UTF-8?q?=E4=B8=AD=E6=96=B0=E5=BB=BA=E6=95=B0=E6=8D=AE=E5=BA=93=E5=BC=B9?= =?UTF-8?q?=E7=AA=97Toast=E6=8F=90=E7=A4=BA=E8=BF=99=E4=B8=80=E6=B5=8B?= =?UTF-8?q?=E8=AF=95=E6=80=A7=E5=86=85=E5=AE=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/com/example/owen/weathergo/util/DBManager.java | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/app/src/main/java/com/example/owen/weathergo/util/DBManager.java b/app/src/main/java/com/example/owen/weathergo/util/DBManager.java index 5d7c915..7907547 100644 --- a/app/src/main/java/com/example/owen/weathergo/util/DBManager.java +++ b/app/src/main/java/com/example/owen/weathergo/util/DBManager.java @@ -7,7 +7,6 @@ import android.os.Environment; import android.support.annotation.Nullable; import android.util.Log; -import android.widget.Toast; import com.example.owen.weathergo.R; import com.example.owen.weathergo.common.base.BaseApplication; @@ -87,11 +86,10 @@ public SQLiteDatabase openDatabase(String dbfile) { "city text)" , dbfile, null, 1); dpHelper.getWritableDatabase(); - Toast.makeText(BaseApplication.getAppContext(), "Create DataBase Successful", Toast.LENGTH_SHORT) - .show(); } } - this.database = SQLiteDatabase.openOrCreateDatabase(DB_PATH + "/" + dbfile, null);; + this.database = SQLiteDatabase.openOrCreateDatabase(DB_PATH + "/" + dbfile, null); + ; //非CITY_DB情况下赋值database return SQLiteDatabase.openOrCreateDatabase(DB_PATH + "/" + dbfile, null); } catch (FileNotFoundException e) { From 71bd308e5290b40bd0a5dba9bb189edc8cccc8f6 Mon Sep 17 00:00:00 2001 From: huangshaohua Date: Sat, 17 Jun 2017 20:28:21 +0800 Subject: [PATCH 18/19] =?UTF-8?q?=E5=8F=91=E5=B8=83=E6=AD=A3=E5=BC=8F1.4.0?= =?UTF-8?q?3.3246=E7=89=88=E6=9C=AC?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/build.gradle | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/build.gradle b/app/build.gradle index ca69ff6..1020b80 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -18,7 +18,7 @@ android { minSdkVersion 15 targetSdkVersion 24 versionCode 10 - versionName '1.4.02.3246beta' + versionName '1.4.03.3246' testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner" vectorDrawables.useSupportLibrary = true /*jackOptions { From 4de12a1c7eb766fb7af1c3688dac225ec4d2a5e0 Mon Sep 17 00:00:00 2001 From: huangshaohua Date: Sat, 17 Jun 2017 20:39:09 +0800 Subject: [PATCH 19/19] versioncode12 --- app/build.gradle | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/build.gradle b/app/build.gradle index 1020b80..8f83b13 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -17,7 +17,7 @@ android { applicationId "com.example.owen.weathergo" minSdkVersion 15 targetSdkVersion 24 - versionCode 10 + versionCode 12 versionName '1.4.03.3246' testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner" vectorDrawables.useSupportLibrary = true