- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有一个 Activity
,它在 ActionBar
中加载 2 个选项卡。 Tab 1 加载一个 Fragment
,它将膨胀一个 WebView
,而 Tab 2 加载一个带有 map 的 Fragment
。最初,我遇到了导致应用程序崩溃的更改选项卡问题。我已按照说明进行操作 here并实现了 onDestroyView()
。
现在的问题是,如果我从选项卡 1 (WebView
) 按下后退按钮,它会正确退出 Activity
。但如果我在选项卡 2( map )上执行此操作,应用程序就会崩溃。当我改变方向时,情况完全相同。我确信它与 onDestroyView()
有关,但我不确定它是什么。
我什至尝试过覆盖
后退按钮,但没有任何效果。
这是我提供一些上下文的代码:
Activity 类:
public class MyActivity extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
//Displaying the tabs by calling ActionBar
ActionBar actionBar = getActionBar();
actionBar.setNavigationMode(ActionBar.NAVIGATION_MODE_TABS);
//Details Tab
String label1 = getResources().getString(R.string.details);
Tab tab = actionBar.newTab();
tab.setText(label1);
TabListener<DetailsFragment> t1 = new TabListener<DetailsFragment>(this, label1, DetailsFragment.class);
tab.setTabListener(t1);
actionBar.addTab(tab);
//Map Tab
String label2 = getResources().getString(R.string.map);
tab = actionBar.newTab();
tab.setText(label2);
TabListener<MapFragment> t2 = new TabListener<MapFragment>(this, label2, MapFragment.class);
tab.setTabListener(t2);
actionBar.addTab(tab);
}
private class TabListener<T extends Fragment> implements ActionBar.TabListener {
private Fragment mFragment;
private final Activity mActivity;
private final String mTag;
private final Class<T> mClass;
/**
* Constructor used each time a new tab is created.
*
* @param activity
* The host Activity, used to instantiate the fragment
* @param tag
* The identifier tag for the fragment
* @param clz
* The fragment's Class, used to instantiate the fragment
*/
public TabListener(Activity activity, String tag, Class<T> clz) {
mActivity = activity;
mTag = tag;
mClass = clz;
}
public void onTabSelected(Tab tab, FragmentTransaction ft) {
// Check if the fragment is already initialized
if (mFragment == null) {
// If not, instantiate and add it to the activity
mFragment = Fragment.instantiate(mActivity, mClass.getName());
ft.add(android.R.id.content, mFragment, mTag);
} else {
// If it exists, simply attach it in order to show it
ft.attach(mFragment);
}
}
public void onTabUnselected(Tab tab, FragmentTransaction ft) {
if (mFragment != null) {
// Detach the fragment, because another one is being attached
ft.detach(mFragment);
}
}
public void onTabReselected(Tab tab, FragmentTransaction ft) {
// User selected the already selected tab. Usually do nothing.
}
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.main, menu);
return true;
} }
细节 fragment :
public class DetailsFragment extends Fragment {
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
View v = inflater.inflate(R.layout.morning, container, false);
WebView webview = (WebView) v.findViewById(R.id.details);
webview.loadUrl("file:///android_asset/pools/details.html");
return v;
} }
map fragment :
public class MapFragment extends Fragment {
static final LatLng mapLatLng = new LatLng("some numbers", "some numbers");
private GoogleMap map;
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
View v = inflater.inflate(R.layout.map, container, false);
map = ((MapFragment)getFragmentManager().findFragmentById(R.id.map)).getMap();
Marker amksc = map.addMarker(new MarkerOptions().position(mapLatLng).title("Map"));
map.moveCamera(CameraUpdateFactory.newLatLngZoom(mapLatLng, 18));
return v;
}
@Override
public void onDestroyView() {
super.onDestroyView();
MapFragment destroyMe = (MapFragment)getFragmentManager().findFragmentById(R.id.map);
if (destroyMe != null) {
getFragmentManager().beginTransaction().remove(destroyMe).commit();
}
} }
感谢您阅读这么长的帖子。任何帮助是极大的赞赏。我将在没有笔记本电脑的情况下离开一段时间(准确地说是 15 天),因此我可能无法回复并测试您的答案,但请放心,我会的 =)
提前致谢!
已编辑以包含错误日志(不确定如何格式化)
04-25 11:27:54.333: E/AndroidRuntime(21779): FATAL EXCEPTION: main
04-25 11:27:54.333: E/AndroidRuntime(21779): java.lang.NullPointerException
04-25 11:27:54.333: E/AndroidRuntime(21779): at android.app.FragmentManagerImpl.execPendingActions(FragmentManager.java:1380)
04-25 11:27:54.333: E/AndroidRuntime(21779): at android.app.FragmentManagerImpl$1.run(FragmentManager.java:430)
04-25 11:27:54.333: E/AndroidRuntime(21779): at android.os.Handler.handleCallback(Handler.java:615)
04-25 11:27:54.333: E/AndroidRuntime(21779): at android.os.Handler.dispatchMessage(Handler.java:92)
04-25 11:27:54.333: E/AndroidRuntime(21779): at android.os.Looper.loop(Looper.java:213)
04-25 11:27:54.333: E/AndroidRuntime(21779): at android.app.ActivityThread.main(ActivityThread.java:4786)
04-25 11:27:54.333: E/AndroidRuntime(21779): at java.lang.reflect.Method.invokeNative(Native Method)
04-25 11:27:54.333: E/AndroidRuntime(21779): at java.lang.reflect.Method.invoke(Method.java:511)
04-25 11:27:54.333: E/AndroidRuntime(21779): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:789)
04-25 11:27:54.333: E/AndroidRuntime(21779): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:556)
04-25 11:27:54.333: E/AndroidRuntime(21779): at dalvik.system.NativeStart.main(Native Method)
最佳答案
我似乎已经解决了后退按钮和方向更改问题。
这里的技巧是不使用onDestroyView()
,而是改变 fragment 的处理方式。而不是 ft.attach(mFragment)
和 ft.detach(mFragment)
,我将它们更改为 ft.show(mFragment)
和 ft.hide(mFragment)
.
至于导致应用程序崩溃的方向变化,我相信(如果我错了请纠正我)只要你没有其他横向布局,你可以添加 android:configChanges="orientation |screenSize"
添加到此 Activity 的 list 中,如下所示:
<activity
android:theme="@style/AppTheme"
android:name="MyFragmentActivity"
android:label="@string/fragmentActivity"
android:configChanges="orientation|screenSize">
</activity>
关于android - 当按下后退按钮或方向改变时,带 map 的 fragment 会使应用程序崩溃,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16205803/
我正在尝试从一个 map 的 map 的 map 的 map 的 map 的 map 的 map 的 map 的 map 的 map 的 map 的 map 的 map 的 map 的 map 的 m
我是 Haskell 的新手,我认为函数 map map和 map.map在 Haskell 中是一样的。 我的终端给了我两种不同的类型, (map.map) :: (a -> b) -> [[a]
我的目标是创建一个 map 的 map ,这样我就可以通过它的键检索外部 map 的信息,然后通过它们的键访问它的“内部” map 。 但是,当我得到每个内部映射时,我最初创建的映射变成了一个对象,我
如何使用 Java8 编写以下代码? for (Entry> entry : data.entrySet()) { Map value = entry.getValue(); if (valu
我有覆盖整个南非的图片。它们为Tiff格式,并已将坐标嵌入其中。我正在尝试拍摄这些图像(大约20张图像),并将它们用作我的iPhone应用程序中的地图叠加层。我的问题在于(准确地)将地图切成图块。 我
所以我有 2 std::map s >一个是“旧的”,一个是“新的”,我想知道哪些文件被删除了,这样就能够遍历差异并对 shared_ptr 做一些事情。这样的事情可能吗?如何做到? 最佳答案 虽然
是否可以将当前查看的 google.maps.Map 转换为静态图像链接,以便我可以获取图像并将其嵌入到 PDF 中? 我在 map 上添加了一些带有自定义图标的标记,所以我不确定这是否真的可行。 如
你能帮我吗 Java Streams ? 从标题可以看出我需要合并List>>进入Map> . 列表表示为List>>看起来像: [ { "USER_1":{
对于 idAndTags 的第二个条目,内部映射被打乱,但第一个条目则不然 第一次接近! for (Map.Entry> entryOne : idAndTags.entrySet()) {
我将从我的代码开始,因为它应该更容易理解我想要做什么: @function get-color($color, $lightness) { @return map-get(map-get($col
我过去曾在许多网站上使用过 Google map ,但遇到了以前从未遇到过的问题。 map 窗口正在显示,但它只显示左上角的 map 片段,以及之后的任何内容(即使我在周围导航时),右侧也不会加载任何
众所周知,这些 map ,无论是常规街道 map 还是卫星 map ,在中国的特定地区都无法正确排列。那么哪个 map 排列正确,是卫星 map 还是默认街道 map ?一些网站表明卫星 map 是正
在拖尾事件之后,我面临着获取此处 map 中的 map 边界的问题。我需要新的经纬度来在新更改的视口(viewport)中获取一些项目/点。我只是想在拖动结束时获得谷歌地图map.getBounds(
我想做的是通过 ajax API 显示以英国邮政编码为中心的小型 bing 生成 map 。我相信这是可能的;我在 Bing map 文档中找不到如何将英国邮政编码转换为可以插入 map Ajax 控
我有一个 List我想转换成的 e Map>其中外部字符串应为“Name”,内部字符串应为“Domain”。 Name Id Domain e(0) - Emp1, 1, Insuran
我的第 2 部分:https://stackoverflow.com/questions/21780627/c-map-of-maps-typedef-doubts-queries 然后我继续创建 I
是否可以在 1 行中使用 Java8 编写以下所有 null 和空字符串检查? Map> data = new HashMap<>(holdings.rowMap()); Set>> entrySet
我正在审查一个项目的旧代码,并使用 Map 的 Map 的 Map 获得了如下数据结构(3 层 map ): // data structure Map>>> tagTree
这可能是一种不好的做法,但我还没有找到更好的解决方案来解决我的问题。所以我有这张 map // Map>> private Map>> properties; 我想初始化它,这样我就不会得到 Null
我们在 JDK 1.7 中使用 HashMap,我在使用 SonarQube 进行代码审查时遇到了一些问题。 请考虑以下示例: public class SerializationTest imple
我是一名优秀的程序员,十分优秀!