我的应用程序启动了一个Activity
,它使用两个Fragments
为List
中的选定项提供详细信息。
启动时,应用程序会在外部存储设备上读取和SQLite
DB。
此外,它从外部存储上的xml文件收集数据。
一切都很好,顺利:)
但是由于我正在使用抽象类在我的详细信息Fragments
中重用代码,因此该应用开始表现得很奇怪。
当我打开或隐藏详细信息Fragment
时,我插入或从USB 拔出设备时,应用程序将崩溃。
我认为它与详细信息Fragments
有关。我不确定,因为如果您拔出设备的电源,调试器或日志记录将无法工作:D
但是所有其他功能都可以正常工作。
如果拔下设备,应用程序会怎样?也许我可以在那里干预...
AbstractDetailFragment:
public AbstractWISDetailFragment(ChooseData cData) {
this.data = cData;
}
@Override
public void onViewCreated(View view, Bundle savedInstanceState) {
super.onViewCreated(view, savedInstanceState);
setDetail();
view.setClickable(true);
}
protected abstract void setDetail();
ImplFragment:
public ActorDetailFragment(ChooseData data) {
super(data);
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
View view = inflater.inflate(R.layout.akteur_detail, container, false);
return view;
}
@Override
protected void setDetail() {
// something
...
}
编辑:
从我触摸列表项以实例化细节片段起,这就是我的logcat条目:
I/InputReader( 305): dispatchTouch::touch event's action is 0, pending(waiting
finished signal)=0
I/InputDispatcher( 305): Delivering touch to current input target: action: 0, c
hannel '41a8fc30 ...ChooseActivity (server)'
I/InputDispatcher( 305): Delivering touch to current input target: action: 0, c
hannel 'TouchIntercepter (server)'
I/InputReader( 305): dispatchTouch::touch event's action is 1, pending(waiting
finished signal)=0
I/InputDispatcher( 305): Delivering touch to current input target: action: 1, c
hannel '41a8fc30 ...ChooseActivity (server)'
I/InputDispatcher( 305): Delivering touch to current input target: action: 1, c
hannel 'TouchIntercepter (server)'
D/WIS_ActorList( 2686): new actor item data set (process reseted)
D/WIS_ChooseActivity( 2686): ProcessButton enabled
D/WIS_ChooseActivity( 2686): ProcessStartButton disabled
D/WIS_ChooseActivity( 2686): ProcessStartButton disabled
D/HierarchicalStateMachine( 305): handleMessage: E msg.what=65619
D/HierarchicalStateMachine( 305): processMsg: ConnectedState
D/WifiStateMachine( 305): ConnectedState{ what=65619 when=-3ms arg1=4 }
D/HierarchicalStateMachine( 305): handleMessage: X
D/HierarchicalStateMachine( 305): handleMessage: E msg.what=65619
D/HierarchicalStateMachine( 305): processMsg: ConnectedState
D/WifiStateMachine( 305): ConnectedState{ what=65619 when=-3ms arg1=4 }
D/HierarchicalStateMachine( 305): handleMessage: X
D/dalvikvm( 2305): GC_EXPLICIT freed 329K, 9% free 6875K/7495K, paused 7ms+2ms
W/PowerManagerService( 305): Timer 0x3->0x3|0x1
D/HierarchicalStateMachine( 305): handleMessage: E msg.what=65619
D/HierarchicalStateMachine( 305): processMsg: ConnectedState
D/WifiStateMachine( 305): ConnectedState{ what=65619 when=-4ms arg1=4 }
D/HierarchicalStateMachine( 305): handleMessage: X
D/HierarchicalStateMachine( 305): handleMessage: E msg.what=65619
D/HierarchicalStateMachine( 305): processMsg: ConnectedState
D/WifiStateMachine( 305): ConnectedState{ what=65619 when=-4ms arg1=4 }
D/HierarchicalStateMachine( 305): handleMessage: X
D/HierarchicalStateMachine( 305): handleMessage: E msg.what=65619
D/HierarchicalStateMachine( 305): processMsg: ConnectedState
D/WifiStateMachine( 305): ConnectedState{ what=65619 when=-4ms arg1=4 }
D/HierarchicalStateMachine( 305): handleMessage: X
如果我拔出设备,logcat会自行杀死。
最佳答案
显然,拔下设备的电源后, Activity Activity 将恢复。如果-在我的情况下-您不使用setArgument并将Bundles交付给您的片段,则将出现问题。
因此,我有一个类似于空指针的东西,因为我的片段无法重新初始化iteself及其通过构造函数传递的数据对象。
Eclipse告诉我不要使用非标准的构造函数。这样,通过参数扩展基本数据对象将无法工作。
解:
只需与Bundle交换数据(即如何完成):
Bundle extra = new Bundle();
extra.putSerializable("myData" this.data);
Fragment fragment = new fragment ();
fragment.setArguments(extra);
tada-一切正常。
如果您在所有 Activity 中都牢记这一点,并且打算不会遇到任何麻烦。
高频
关于android - 从USB拔出时,Android App崩溃,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/11527978/