我已经在这个问题上工作了几个小时而没有成功。我还引用了其他StackOverflow问题而未找到解决方案。
当我从异步任务onPostExecute()方法调用我的新活动时,新活动无法打开。它列在我的清单中。按钮单击但屏幕不会切换到新活动。
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_homepage);
Button editprofile = (Button) findViewById(R.id.profilebutton);
editprofile.setOnClickListener(new View.OnClickListener() {
public void onClick(View v) {
new ProfileTask().execute();
}
});
//search = (EditText)findViewById(R.id.editText); //setup variable
}
public void Go(View view) {
}
//public void Edit(View view) {
//this.startActivity(new Intent(this, ProfileActivity.class));
//}
public void Viewcart(View view) {
//
}
public void Logout(View view) {
setContentView(R.layout.activity_main);
}
private class ProfileTask extends AsyncTask<String, Void, String> {
private Context context;
protected void onpreExecute() {} //parent class
@Override //do not want to call parent method. use super if you want both
protected String doInBackground(String... arg0) {
try {
//search for phrase
//php script to call
String link = "http://people.aero.und.edu/~lwingate/457/2/profile_get.php";
//get method to pass variables
link += "?username=" + URLEncoder.encode("customer", "UTF-8");
link += "&password=" + URLEncoder.encode("testing", "UTF-8");
//Connect to server
URL url = new URL(link);
URLConnection conn = url.openConnection();
conn.setDoOutput(true);
//Read server response
BufferedReader reader = new BufferedReader(
new InputStreamReader(conn.getInputStream()));
StringBuilder sb = new StringBuilder();
String line = null;
while ((line = reader.readLine()) != null) {
sb.append(line);
break;
}
return sb.toString();
}
catch(Exception e) {
return new String("Exception: " + e.getMessage());
}
}
@Override
protected void onPostExecute(String result) { //result of background computation passed here after doneif (result!=null) { //if returns with data, entry exists. login successful
Intent intent = new Intent(context, ProfileResultsActivity.class);
intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
startActivity(intent);
//Intent newintent = new Intent();
//newintent.setClass(context, SearchResultsActivity.class);
//context.startActivity(newintent);
//context.startActivity(new Intent(MainActivity.this, SearchResultsActivity.class));
}
}
}
LogCat:
04-28 21:21:27.055 29642-29642/? I/art: Not late-enabling -Xcheck:jni (already on)
04-28 21:21:27.055 29642-29642/? W/art: Unexpected CPU variant for X86 using defaults: x86
04-28 21:21:27.183 29642-29642/com.example.aplicacaodelivros W/System: ClassLoader referenced unknown path: /data/app/com.example.aplicacaodelivros-2/lib/x86
04-28 21:21:27.201 29642-29642/com.example.aplicacaodelivros I/InstantRun: starting instant run server: is main process
04-28 21:21:27.337 29642-29670/com.example.aplicacaodelivros I/OpenGLRenderer: Initialized EGL, version 1.4
04-28 21:21:27.337 29642-29670/com.example.aplicacaodelivros D/OpenGLRenderer: Swap behavior 1
04-28 21:21:27.338 29642-29670/com.example.aplicacaodelivros W/OpenGLRenderer: Failed to choose config with EGL_SWAP_BEHAVIOR_PRESERVED, retrying without...
04-28 21:21:27.338 29642-29670/com.example.aplicacaodelivros D/OpenGLRenderer: Swap behavior 0
04-28 21:21:29.761 29642-29642/com.example.aplicacaodelivros W/IInputConnectionWrapper: finishComposingText on inactive InputConnection
04-28 21:21:30.695 29642-29642/com.example.aplicacaodelivros W/IInputConnectionWrapper: finishComposingText on inactive InputConnection
答案 0 :(得分:0)
请尝试此操作,如果不能正常显示您的logcat。
Intent intent = new Intent(context, ProfileResultsActivity.class);
intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
startActivity(intent);
Change your code below this
Intent intent = new Intent(Yourclassnname.this,ProfileResultsActivity.class);
startActivity(intent);
答案 1 :(得分:0)
private class ProfileTask extends AsyncTask<String, Void, String> { private Context context; protected void onpreExecute(Context context) {this.context=context;
}
onpostexecute方法中的将其写为
protected void onPostExecute(String result) { Intent intent = new Intent(context, ProfileResultsActivity.class); intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK); context. startActivity(intent);