diff --git a/app/build.gradle b/app/build.gradle
index 168190d..8f83b13 100644
--- a/app/build.gradle
+++ b/app/build.gradle
@@ -17,8 +17,8 @@ android {
applicationId "com.example.owen.weathergo"
minSdkVersion 15
targetSdkVersion 24
- versionCode 10
- versionName '1.4.01.3141dev'
+ versionCode 12
+ versionName '1.4.03.3246'
testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
vectorDrawables.useSupportLibrary = true
/*jackOptions {
diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml
index f376a51..ddd3001 100644
--- a/app/src/main/AndroidManifest.xml
+++ b/app/src/main/AndroidManifest.xml
@@ -48,13 +48,11 @@
android:name=".activity.SettingsActivity"
android:launchMode="singleTask" />
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..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
@@ -1,23 +1,26 @@
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;
+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;
@@ -40,9 +43,10 @@ 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;
private int currentLevel;
-// private boolean isChecked = false;
+
@RequiresApi(api = Build.VERSION_CODES.JELLY_BEAN)
@Override
@@ -60,6 +64,9 @@ protected void onStart() {
super.onStart();
Intent intent = this.getIntent();
what_to_do = intent.getStringExtra("what_to_do");
+ which_city = ("".equals(intent.getStringExtra("which_city"))
+ || intent.getStringExtra("which_city") == null)
+ ? C.Tag_CITY_0 : intent.getStringExtra("which_city");
}
private void init() {
@@ -83,14 +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 {
- SharedPreferenceUtil.getInstance().setCityName(selectedCity.getCityName());
+ } else if (!"".equals(which_city)) {
+ updateCity();
}
-// finish();
quit();
}
@@ -104,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) {
@@ -126,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());
}
@@ -143,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 711bfe2..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
@@ -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;
@@ -41,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) {
@@ -64,7 +62,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 {
@@ -75,11 +72,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();
}
@@ -98,7 +91,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");
@@ -117,7 +109,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("城市已存在😁")
@@ -135,6 +126,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 +137,7 @@ public void onYesClick() {
}
}
dialog2.dismiss();
+ DBManager.getInstance().closeDatabase();
}
});
dialog2.setNoOnclickListener("取消", new CityDialog.onNoOnclickListener() {
@@ -167,10 +160,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));
}
}
@@ -179,7 +169,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));
}
}
@@ -199,31 +188,13 @@ protected void onActivityResult(int requestCode, int resultCode, Intent data) {
case 1:
if (resultCode == RESULT_OK) {
Boolean addData = true;
- mResultCity = data.getStringExtra("select_multi_city");
- Log.d("MultiCitiesManagerActivityhuang", " onActivityResult "
- + mResultCity);
+ String mResultCity = data.getStringExtra("select_multi_city");
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 d280ff2..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
@@ -37,9 +37,9 @@
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.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;
@@ -52,6 +52,7 @@
import butterknife.BindView;
import butterknife.ButterKnife;
+
public class WeatherMain extends AppCompatActivity
implements NavigationView.OnNavigationItemSelectedListener {
@@ -65,9 +66,8 @@ 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 = C.Tag_CITY_0;
+ private static int mPageNum;
public LocationClient mLocationClient;
ArrayList cityList = new ArrayList<>();
@@ -86,7 +86,6 @@ public class WeatherMain extends AppCompatActivity
@BindView(R.id.tabLayout)
TabLayout mTabLayout;
- private ActionBarDrawerToggle mDrawerToggle;
private Handler mHandler;
private HomePagerAdapter mHomePagerAdapter;
@@ -103,55 +102,21 @@ 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错误的额现象
+ //防止刷新后城市顺序混乱出现title错误的现象
int cityNum = getIntent().getIntExtra("city_num", -1);
- if (cityNum != -1) {
- //如果在MultiCitiesManagerActivity中没有返回而是点击了其中一个城市进行跳转
- //就不会出发回调函数;
- 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();
- 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));
- mHomePagerAdapter.addTab(mtf, cityList.get(i));
- }
- }
- mViewPager.setAdapter(mHomePagerAdapter);
- if (mCityCount != 0) {
- mTabLayout.setupWithViewPager(mViewPager, false);
- }
- Log.d("WeatherMainhuang", "onStart getIntExtra " + cityNum);
- }
+ int pageNum = getIntent().getIntExtra("which_page", -1);
+ //如果在MultiCitiesManagerActivity中没有返回而是点击了其中一个城市进行跳转就不会触发回调函数;
+ syncCity();
mViewPager.setCurrentItem(cityNum + 1);
+ if (pageNum > -1) {
+ mViewPager.setCurrentItem(pageNum);
+ }
super.onStart();//将super.onStart();移动到刷新操作之后再从多城市管理点击跳转就不崩溃了
}
@@ -189,14 +154,36 @@ public void onClick(View v) {
mViewPager.addOnPageChangeListener(new ViewPager.SimpleOnPageChangeListener() {
@Override
public void onPageSelected(int position) {
+ switch (position) {
+ //通过当前Fragment决定搜索或选择城市时在哪个位置更改
+ case 0:
+ mThisPage = C.Tag_CITY_0;
+ break;
+ case 1:
+ mThisPage = C.Tag_CITY_1;
+ break;
+ case 2:
+ mThisPage = C.Tag_CITY_2;
+ break;
+ case 3:
+ mThisPage = C.Tag_CITY_3;
+ break;
+ case 4:
+ mThisPage = C.Tag_CITY_4;
+ break;
+ case 5:
+ mThisPage = C.Tag_CITY_5;
+ break;
+ default:
+ }
String titleStr;
- if (position == 0)
+ if (position == 0) {
titleStr = SharedPreferenceUtil.getInstance().getCityName();
- else
+ } else {
titleStr = cityList.get(position - 1);
+ }
+ mPageNum = position;
safeSetTitle(titleStr);
-// ToastUtil.showShort(""+position);
-// super.onPageSelected(position);
}
});
}
@@ -215,7 +202,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;
@@ -231,10 +217,13 @@ 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;
- mHandler.sendMessage(msg);
+ updateCity(dialog.mCityEdit.getText().toString(), mThisPage);
+ syncCity();
+ mViewPager.setCurrentItem(mPageNum);
+ if (mThisPage.equals(C.Tag_CITY_0)) {
+ //在主界面情况下,直接刷新为新城市名
+ safeSetTitle(SharedPreferenceUtil.getInstance().getCityName());
+ }
dialog.dismiss();
}
});
@@ -258,62 +247,90 @@ 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);
}
+ private void syncCity() {
+ mHomePagerAdapter = new HomePagerAdapter(getSupportFragmentManager());
+ 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();
+ 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));
+ }
+ mTabLayout.setupWithViewPager(mViewPager, false);
+ }
+ mViewPager.setAdapter(mHomePagerAdapter);
+ }
+
+ 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:
+ }
+ DBManager.getInstance().closeDatabase();
+ }
+
+
@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());
-// 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);
- }
+ syncCity();
}
break;
default:
@@ -329,7 +346,6 @@ protected void onDestroy() {
if (mLocationClient != null)
mLocationClient.stop();
//先判空,否则可能fc
-
DBManager.getInstance().closeDatabase();
}
@@ -342,49 +358,13 @@ public void init() {
getWindow().addFlags(WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS);
//使导航栏透明getWindow().addFlags(WindowManager.LayoutParams.FLAG_TRANSLUCENT_NAVIGATION);
}
-
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++) {
-// 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);
- }
+ syncCity();
String cCity = SharedPreferenceUtil.getInstance().getCityName();
- Log.d("WeatherMainhuang", " init " + cCity);
if ("".equals(cCity) || cCity == null)//判断SharedPreference中存储的是否为空,即如果第一次执行程序不会变为空值进行初始赋值
{
- Log.d("WeatherMainhuang", " initLocation " + cCity);
initLocation();
}
}
@@ -392,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)
@@ -470,7 +449,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);
//旧版本可能会空指针
@@ -484,7 +463,10 @@ 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);
break;
case R.id.nav_edit_city:
toSearchDialog();
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 323d530..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,6 +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;
@@ -26,6 +27,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;
@@ -84,6 +86,7 @@ public void handleMessage(Message msg) {
mNoData.setVisibility(View.GONE);
refresh();
}
+
break;
case SEARCH_CITY:
//Fragment与activity交互http://blog.csdn.net/huangyabin001/article/details/35231753
@@ -130,17 +133,19 @@ public void run() {
}
};
- @Override
- public void onCreate(@Nullable Bundle savedInstanceState) {
- super.onCreate(savedInstanceState);
- mToastSuccess = 0;
- }
@Override
public void onAttach(Activity activity) {
- super.onAttach(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 表示定义的字段可以为空.
@@ -158,7 +163,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;
@@ -183,13 +187,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;
@@ -199,6 +201,11 @@ public void run() {
}
}
+ @Override
+ public void onResume() {
+ super.onResume();
+ }
+
@Override
public void onDestroy() {
super.onDestroy();
@@ -216,11 +223,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();
}
@@ -303,7 +307,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 3201c49..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,7 +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;
import android.graphics.Bitmap;
@@ -27,6 +25,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;
@@ -51,12 +50,8 @@ 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;
+
@BindView(R.id.no_city_data)
TextView mNoCityData;
@@ -72,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;
@@ -92,65 +86,49 @@ public void handleMessage(Message msg) {
refresh();
}
break;
- case SEARCH_CITY:
+
+ /*case SEARCH_CITY:
//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"))) {
+ 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);
- /*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() {
- mWeather = JSONUtil.getInstance().getWeather(getActivity(), mCityStr, mCityNum + 1);
- Message message = new Message();
- message.what = UPDATE_WEATHER_DATA;
- mHandler.sendMessage(message);
+ ArrayList cityList = new ArrayList<>();
+ if (cursor.moveToFirst()) {
+ do {
+ //遍历cursor
+ String city = cursor.getString(cursor.getColumnIndex("city"));
+ cityList.add(city);
+ } while (cursor.moveToNext());
}
- }).start();
- } else {
- Message message = new Message();
- message.what = CHANGE_TEXT;
- message.obj = "no_city_data";
- mHandler.sendMessage(message);
- //请手动选择城市
+ cursor.close();
+ String Ccity = cityList.get(mCityNum);
+ ContentValues values = new ContentValues();
+ values.put("city", mCityStr);
+ db.update("MultiCities", values, "city = ?", new String[]{
+ Ccity
+ });
+ 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;
+ break;*/
case SCREEN_SHOOT:
/**
* 动态获取权限,Android 6.0 新特性,一些保护权限,除了要在AndroidManifest中声明权限,还要使用如下代码动态获取
@@ -191,16 +169,29 @@ 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 = C.Tag_CITY_1;
+ break;
+ case 1:
+ mThisPage = C.Tag_CITY_2;
+ break;
+ case 2:
+ mThisPage = C.Tag_CITY_3;
+ break;
+ case 3:
+ mThisPage = C.Tag_CITY_4;
+ break;
+ case 4:
+ mThisPage = C.Tag_CITY_5;
+ break;
+ default:
}
- Log.d("MultiCityFragmenthuang", " onCreate " + mCityStr + " " + mCityNum);
- }
-
- @Override
- public void onAttach(Activity activity) {
- super.onAttach(activity);
- mActivity = (WeatherMain) activity;
- mActivity.setHandler(mHandler);
}
//@Nullable 表示定义的字段可以为空.
@@ -256,25 +247,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() {
@@ -292,8 +264,6 @@ public void run() {
@Override
public void onDestroy() {
super.onDestroy();
- /*Intent intent = new Intent(getActivity(), AutoUpdateService.class);
- getActivity().stopService(intent);*/
DBManager.getInstance().closeDatabase();
}
@@ -316,30 +286,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);
@@ -366,26 +315,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() {
@@ -452,19 +381,12 @@ public void getWeather() {
mWeather = JSONUtil.getInstance().getWeather(getActivity(), mCityStr, mCityNum + 1);
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);*/
+ String mGCityStr = mWeather.getBasic().getCity();
} 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) {
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) {