AsyncTask onPostExecute 错误中的新意图
Posted
技术标签:
【中文标题】AsyncTask onPostExecute 错误中的新意图【英文标题】:new intent in AsyncTask onPostExecute error 【发布时间】:2017-07-23 01:54:00 【问题描述】:我想在 AsyncTask
onPostExecute
中调用意图,但出现错误,
这是我的代码,
protected void onPostExecute(Void aVoid)
if(name.equals("success"))
// tv.setText("berhasil");
// Toast.makeText(mContext, name, Toast.LENGTH_LONG).show();
Intent intent = new Intent(MainActivity.this, SecondActivity.class);
getApplicationContext().startActivity(intent);
else
pDialog.setMessage(name);
pDialog.show();
pDialog.dismiss();
super.onPostExecute(aVoid);
SecondActivity.java
public class SecondActivity extends AppCompatActivity
@Override
protected void onCreate(Bundle savedInstanceState)
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_second);
Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);
setSupportActionBar(toolbar);
FloatingActionButton fab = (FloatingActionButton) findViewById(R.id.fab);
fab.setOnClickListener(new View.OnClickListener()
@Override
public void onClick(View view)
Snackbar.make(view, "Replace with your own action", Snackbar.LENGTH_LONG)
.setAction("Action", null).show();
);
getSupportActionBar().setDisplayHomeAsUpEnabled(true);
谁能帮我解决这个问题??谢谢之前
这个错误日志
D/androidRuntime: Shutting down VM
E/AndroidRuntime: FATAL EXCEPTION: main
Process: aws.sample.com.sampleawsconnection, PID: 9959
java.lang.NoSuchMethodError: No static method setOnApplyWindowInsetsListener(Landroid/view/View;Landroid/support/v4/view/ViewCompatLollipop$OnApplyWindowInsetsListenerBridge;)V in class Landroid/support/v4/view/ViewCompatLollipop; or its super classes (declaration of 'android.support.v4.view.ViewCompatLollipop' appears in /data/app/aws.sample.com.sampleawsconnection-2/base.apk)
at android.support.v4.view.ViewCompat$LollipopViewCompatImpl.setOnApplyWindowInsetsListener(ViewCompat.java:1646)
at android.support.v4.view.ViewCompat.setOnApplyWindowInsetsListener(ViewCompat.java:2996)
at android.support.v7.app.AppCompatDelegateImplV7.createSubDecor(AppCompatDelegateImplV7.java:425)
at android.support.v7.app.AppCompatDelegateImplV7.ensureSubDecor(AppCompatDelegateImplV7.java:312)
at android.support.v7.app.AppCompatDelegateImplV7.setContentView(AppCompatDelegateImplV7.java:277)
at android.support.v7.app.AppCompatActivity.setContentView(AppCompatActivity.java:140)
at aws.sample.com.sampleawsconnection.SecondActivity.onCreate(SecondActivity.java:15)
at android.app.Activity.performCreate(Activity.java:6679)
at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1118)
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2618)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2726)
at android.app.ActivityThread.-wrap12(ActivityThread.java)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1477)
at android.os.Handler.dispatchMessage(Handler.java:102)
at android.os.Looper.loop(Looper.java:154)
at android.app.ActivityThread.main(ActivityThread.java:6119)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:886)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:776)
【问题讨论】:
替换这个 getApplicationContext().startActivity(intent);与 startActivity(intent);并尝试。如果这不起作用试试 this.startActivity(intent); 我正在尝试这个,但仍然错误强制关闭,知道吗?? 试试尼克卡多索的回答 你能发布错误日志吗? 你确定 setMessage 行不是错误吗? pDialog 在哪里初始化? 【参考方案1】:没有FLAG_ACTIVITY_NEW_TASK
,您无法从应用程序上下文启动活动
两个选项(1)将您的活动上下文传递给任务(错误,导致泄漏)或(2)添加标志:
Intent intent = new Intent(MainActivity.this, SecondActivity.class);
intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
getApplicationContext().startActivity(intent);
编辑:我刚刚注意到你可以访问MainActivity.this
,这意味着你是一个内部类,所以你可以这样做:
Intent intent = new Intent(MainActivity.this, SecondActivity.class);
MainActivity.this.startActivity(intent);
请确保您的 gradle 文件是最新的(您可能需要同步最新的构建工具):
compileSdkVersion 25
targetSdkVersion to 25
compile 'com.android.support:appcompat-v7:25.2.0'
compile 'com.android.support:support-v4:25.2.0'
【讨论】:
我试过这个,但仍然错误强制关闭,知道吗?? 检查我列出的 gradle 行【参考方案2】:将您的旧库更新为较新的库。 喜欢
compile 'com.android.support:design:23.1.1'
到
compile 'com.android.support:design:24.2.0'
还将compileSdkVersion
更新为 24,buildToolsVersion
更新为 24.0.1,targetSdkVersion
更新为 24。
希望对你有帮助。
【讨论】:
【参考方案3】:在 Asynctask 的构造函数中传递上下文对象并使用该上下文在 postexecute 中启动活动
【讨论】:
以上是关于AsyncTask onPostExecute 错误中的新意图的主要内容,如果未能解决你的问题,请参考以下文章
完成 AsyncTask 后未调用 onPostExecute
AsyncTask 的 onPostExecute 被调用:但 doInBackground 没有
onPostExecute() 无法重新运行从活动调用的 asyncTask
Android,AsyncTask 不调用 onProgressUpdate 和 onPostExecute