嘗試此操作約3天后,如果沒有運氣,通過幾個線程挖掘,我必須將sos發送給任何能夠善意查看我的代碼的人。 該應用功能完美無缺,直到我翻轉到風景模式。如何防止getChildFragmentManager強制轉換爲SupportMapFragment在景觀模式下崩潰
我正在執行解決方案,正如在下面的線程中所描述的,所以我移動代碼的方式很多,但我遇到了如下錯誤:Nullpointer異常。未找到id爲xxxx的視圖。孩子已經有一位家長。
無論我做什麼,它都會一直崩潰。請參閱我跟着線程,但沒有運氣
thread 1,thread 2,thread 3,thread 4,thread 5
我很失望我下載了這個漂亮的應用程序(Airbnb google map),看看他們是如何解決這個問題,但在我翻轉電話它崩潰完全像我的。我可能會給開發者發一封便條。
我在線程閱讀意見是不同的,給出的概念是有趣的,但我不能解決這個問題。將欣賞一些新的代碼行。
代碼
public class MapsActivity extends Fragment implements LoaderManager.LoaderCallbacks<Cursor> {
public static final String LOG_TAG = MapsActivity.class.getSimpleName();
private static final int CURSOR_LOADER_ID = 0;
private Cursor initQueryCursor;
private GetSet coord;
private AppPreferences sPref;
private LatLng home;
private SupportMapFragment sMap;
private FragmentManager fm;
private GoogleMap mMap;
private static final String FRAGMENT_LISTS =
"net.simonvt.schematic.samples.ui.SampleActivity.LISTS";
public MapsActivity() {
}
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
sPref = new AppPreferences(getActivity());
SyncAdapter.syncImmediately(getActivity(),
sPref.getCoordBody("lat"),
sPref.getCoordBody("lon"));
getLoaderManager().initLoader(CURSOR_LOADER_ID, null, this);
// getLoaderManager().restartLoader(CURSOR_LOADER_ID, null, this);
// mMapCursor = new MapCursor(getActivity(), null, 0);
// ConnectivityManager cm =
// (ConnectivityManager) mContext.getSystemService(Context.CONNECTIVITY_SERVICE);
// NetworkInfo activeNetwork = cm.getActiveNetworkInfo();
// getLoaderManager().restartLoader(CURSOR_LOADER_ID, null, this);
}
@Override
public View onCreateView(final LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
if(savedInstanceState==null) {
View v = inflater.inflate(R.layout.yelp_google_map, container, false);
fm = getChildFragmentManager();
sMap = (SupportMapFragment) fm.findFragmentById(R.id.map);
mMap = sMap.getMap();
initQueryCursor = getActivity().getContentResolver().query(QuoteProvider.Quotes.CONTENT_URI,
new String[]{QuoteColumns.URL, QuoteColumns.DISPLAY_PHONE, QuoteColumns.RATING_IMG,
QuoteColumns.ID_BUSINESS_NAME, QuoteColumns.DISPLAY_ADDRESS, QuoteColumns.POSTAL_CODE,
QuoteColumns.LATITUDE, QuoteColumns.LOGITUDE}, null,
null, null);
LatLngBounds.Builder builder = new LatLngBounds.Builder();
if (initQueryCursor != null) {
DatabaseUtils.dumpCursor(initQueryCursor);
initQueryCursor.moveToFirst();
for (int i = 0; i < initQueryCursor.getCount(); i++) {
home = new LatLng(Double.valueOf(initQueryCursor.getString(initQueryCursor.getColumnIndex("latitude"))),
Double.valueOf(initQueryCursor.getString(initQueryCursor.getColumnIndex("longitude"))));
Marker m = mMap.addMarker(new MarkerOptions().position(home).
title(initQueryCursor.getString(initQueryCursor.getColumnIndex("id_bussines_name"))));
initQueryCursor.moveToNext();
builder.include(home);
}
if (home != null) {
mMap.moveCamera(CameraUpdateFactory.newLatLngBounds(builder.build(), 215, 210, 0));
}
initQueryCursor.close();
mMap.setOnInfoWindowClickListener(new GoogleMap.OnInfoWindowClickListener() {
public void onInfoWindowClick(Marker marker) {
Intent intent = new Intent(getContext(), DetailActivity.class);
intent.putExtra("title", marker.getTitle());
startActivity(intent);
}
});
}
return v;
}
return null;
}
@Override
public Loader<Cursor> onCreateLoader(int id, Bundle args) {
return new CursorLoader(getActivity(), QuoteProvider.Quotes.CONTENT_URI,
new String[]{ QuoteColumns._ID, QuoteColumns.DISPLAY_ADDRESS, QuoteColumns.DISPLAY_PHONE,
QuoteColumns.RATING, QuoteColumns.URL, QuoteColumns.POSTAL_CODE, QuoteColumns.ID_BUSINESS_NAME,
QuoteColumns.LATITUDE,
QuoteColumns.LOGITUDE},
null,
null,
null);
}
@Override
public void onLoadFinished(Loader<Cursor> loader, Cursor data) {
if (loader != null) {
// mMapCursor.swapCursor(data);
initQueryCursor = data;
}
}
@Override
public void onLoaderReset(Loader<Cursor> loader) {
}
}
佈局
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context="mem.edu.joshua.MapsActivity"
android:background="#009688">
<fragment
android:id="@+id/map"
android:layout_width="match_parent"
android:layout_height="match_parent"
class="com.google.android.gms.maps.SupportMapFragment" />
</RelativeLayout>
這僅僅是我得到的錯誤之一。根據我改變什麼,我得到一個不同的錯誤,如我上面提到
FATAL EXCEPTION: main
Process: mem.edu.joshua, PID: 21406
java.lang.IllegalArgumentException: No view found for id 0x7f0c0081 (mem.edu.joshua:id/map) for fragment MapsActivity{425ff5b8 #2 id=0x7f0c0081 MapsActivity}
at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:1098)
at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:1286)
at android.support.v4.app.BackStackRecord.run(BackStackRecord.java:758)
at android.support.v4.app.FragmentManagerImpl.execPendingActions(FragmentManager.java:1671)
at android.support.v4.app.FragmentManagerImpl$1.run(FragmentManager.java:532)
at android.os.Handler.handleCallback(Handler.java:733)
at android.os.Handler.dispatchMessage(Handler.java:95)
at android.os.Looper.loop(Looper.java:146)
at android.app.ActivityThread.main(ActivityThread.java:5692)
at java.lang.reflect.Method.invokeNative(Native Method)
at java.lang.reflect.Method.invoke(Method.java:515)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1291)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1107)
at dalvik.system.NativeStart.main(Native Method)
可能你應該看看這些鏈接。 1)http://wptrafficanalyzer.in/blog/retain-markers-on-screen-rotation-in-google-maps-android-api-v2-using-parcelable-latlng-points/(2)http:// www .androiddesignpatterns.com/2013/04/retaining-objects-across-config-changes.html(3)http://www.androidtrainee.com/retain-markers-on-screen-rotation-in-google-maps-android -api-v2-using-parcelable-latlng-points/ – Stallion
@Stallion,感謝您的幫助。我看到鏈接(2)很有趣。我有希望在那一個,但我不斷得到。 ** IllegalArgumentException:沒有發現ID爲0x..81的片段。**鏈接(1)類似於鏈接(3)。他們專注於保留標記,我沒有問題,因爲我正在使用SQLite。也鏈接(1)使用FragmentActivity,我沒有,我有一個片段。我的主要是在一個不同的文件中,我添加了這個。 '在連接(3) – Erik