尝试此操作约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