01-10 18:35:44.372:E / AndroidRuntime(18378):致命异常:Timer-1 01-10 18:35:44.372:E / AndroidRuntime(18378): java.lang.IllegalStateException:必须从主线程调用 process 01-10 18:35:44.372:E / AndroidRuntime(18378):at android.app.FragmentManagerImpl.execPendingActions(FragmentManager.java:1373) 01-10 18:35:44.372:E / AndroidRuntime(18378):at android.app.FragmentManagerImpl.executePendingTransactions(FragmentManager.java:437) 01-10 18:35:44.372:E / AndroidRuntime(18378):at android.app.FragmentManagerImpl.popBackStackImmediate(FragmentManager.java:454) 01-10 18:35:44.372:E / AndroidRuntime(18378):at android.app.Activity.onBackPressed(Activity.java:2134)01-10 18:35:44.372:E / AndroidRuntime(18378):at com.vwap.friends.MygoBack(MyDialog.java:90)01-10 18:35:44.372: E / AndroidRuntime(18378):at com.vwap.friends.MyDialog $ 3.run(MyDialog.java:83)01-10 18:35:44.372:E / AndroidRuntime(18378):at java.util.Timer中$ TimerImpl.run(Timer.java:284)
我不知道从哪里开始。我首先阅读有关Fragments的内容,还是可以快速修复此问题并发布我的应用程序?
答案 0 :(得分:2)
您正在主线程上执行网络操作。如果您的目标SDK为11或更高,则会抛出NetworkOnMainThreadException
,因为此行为可能会阻止用户界面并导致应用无响应。
您可以使用AsyncTask
解决此问题,将数据加载到doInBackground(..)
。
答案 1 :(得分:1)
尝试使用 runOnUiThread(Runnable 的动作)。强>
或强>
您还可以尝试处理程序:
final Runnable YOURVIEW = new Runnable()
{
public void run()
{
SampleMethod(); // Put your Method What you want change
handler.postDelayed(this, timeout);
}
};
handler.postDelayed(changeView, timeout);
答案 2 :(得分:0)
即使我遇到类似的问题,但我认为您必须包含android_support_v4.jar
文件才能兼容所有Android版本。