2016-03-26 9 views
0

Hier ist mein Java-Code. Mein Problem ist, wenn ich einen Code zu OnPostExecute hinzufügen, um eine andere Aktivität zu öffnen. Ich bin neu in Android Studio, also habe ich dieses Problem zum ersten Mal.Kann keine neue Aktivität von onPostExecute-Methode in Android starten

package com.example.gonalo.meu; 

import android.app.AlertDialog; 
import android.content.Context; 
import android.content.Intent; 
import android.os.AsyncTask; 
import android.os.Bundle; 
import android.support.design.widget.FloatingActionButton; 
import android.support.design.widget.Snackbar; 
import android.support.v7.app.AppCompatActivity; 
import android.support.v7.widget.Toolbar; 
import android.view.View; 

import java.io.BufferedReader; 
import java.io.BufferedWriter; 
import java.io.IOException; 
import java.io.InputStream; 
import java.io.InputStreamReader; 
import java.io.OutputStream; 
import java.io.OutputStreamWriter; 
import java.net.HttpURLConnection; 
import java.net.MalformedURLException; 
import java.net.URL; 
import java.net.URLEncoder; 

import static android.support.v4.app.ActivityCompat.startActivity; 
import static android.support.v4.content.ContextCompat.startActivities; 

/** 
* Created by Gonçalo on 23/03/2016. 
*/ 

public class BackGroundWorker extends AsyncTask<String,Void,String> { 
Context context; 
AlertDialog alertDialog; 
BackGroundWorker (Context ctx) { 
    context = ctx; 
} 

@Override 
protected String doInBackground(String... params) { 
    String type = params[0]; 
    String login_url = "http://192.168.1.79/login.php"; 
    String register_url = "http://192.168.1.79/register.php"; 
    //String verifyuserpass_url = "http://192.168.0.102/verifyuserpass.php"; 
    //String verifypass_url = "http://192.168.0.102/verifyuserpass.php"; 
    if(type.equals("login")) { 
     try { 
      String user_name = params[1]; 
      String password = params[2]; 
      URL url = new URL(login_url); 
      HttpURLConnection httpURLConnection = (HttpURLConnection) url.openConnection(); 
      httpURLConnection.setRequestMethod("POST"); 
      httpURLConnection.setDoOutput(true); 
      httpURLConnection.setDoInput(true); 
      OutputStream outputStream = httpURLConnection.getOutputStream(); 
      BufferedWriter bufferedWriter = new BufferedWriter(new OutputStreamWriter(outputStream, "UTF-8")); 
      String post_data = URLEncoder.encode("user_name", "UTF-8") + "=" + URLEncoder.encode(user_name, "UTF-8") + "&" + URLEncoder.encode("password", "UTF-8") + "=" + URLEncoder.encode(password, "UTF-8"); 
      String user = URLEncoder.encode(user_name, "UTF-8");//guarda o nome de utilizador introduzido 
      String pass = URLEncoder.encode(password, "UTF-8");//guarda a pass introduzido 
      System.err.println("------------------------------------------"); 
      /*/ if(user.equals("Nome de Utilizador")){ 
        if(pass.equals("Password")) { 
         System.err.println("Entrou no if"); 
         startActivity(new Intent(this, Pagina1.class));} 
/*/ 
      bufferedWriter.write(post_data); 
      bufferedWriter.flush(); 
      bufferedWriter.close(); 
      outputStream.close(); 
      InputStream inputStream = httpURLConnection.getInputStream(); 

      BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(inputStream,"iso-8859-1")); 
      String result=""; 
      String line=""; 
      while((line = bufferedReader.readLine())!= null) { 
       result +=line; 

      } 

      bufferedReader.close(); 
      inputStream.close(); 
      httpURLConnection.disconnect(); 
      return result; 

     } catch (MalformedURLException e) { 
      e.printStackTrace(); 
     } catch (IOException e) { 
      e.printStackTrace(); 
     } 

    } else if(type.equals("register")) { 
     try { 
      String name = params[1]; 
      String surname = params[2]; 
      String age = params[3]; 
      String username = params[4]; 
      String password = params[5]; 
      URL url = new URL(register_url); 
      HttpURLConnection httpURLConnection = (HttpURLConnection)url.openConnection(); 
      httpURLConnection.setRequestMethod("POST"); 
      httpURLConnection.setDoOutput(true); 
      httpURLConnection.setDoInput(true); 
      OutputStream outputStream = httpURLConnection.getOutputStream(); 
      BufferedWriter bufferedWriter = new BufferedWriter(new OutputStreamWriter(outputStream, "UTF-8")); 
      String post_data = URLEncoder.encode("name", "UTF-8")+"="+URLEncoder.encode(name, "UTF-8")+"&" 
        + URLEncoder.encode("surname", "UTF-8")+"="+URLEncoder.encode(surname, "UTF-8")+"&" 
        + URLEncoder.encode("age", "UTF-8")+"="+URLEncoder.encode(age, "UTF-8")+"&" 
        + URLEncoder.encode("username", "UTF-8")+"="+URLEncoder.encode(username, "UTF-8")+"&" 
        +URLEncoder.encode("password", "UTF-8")+"="+URLEncoder.encode(password, "UTF-8"); 

      bufferedWriter.write(post_data); 
      bufferedWriter.flush(); 
      bufferedWriter.close(); 
      outputStream.close(); 
      InputStream inputStream = httpURLConnection.getInputStream(); 
      BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(inputStream,"iso-8859-1")); 
      String result=""; 
      String line=""; 
      while((line = bufferedReader.readLine())!= null) { 
       result += line; 

       } 
      bufferedReader.close(); 
      inputStream.close(); 
      httpURLConnection.disconnect(); 
      return result; 
     } catch (MalformedURLException e) { 
      e.printStackTrace(); 
     } catch (IOException e) { 
      e.printStackTrace(); 
     } 

    } 

    return null; 
} 



@Override 
protected void onPreExecute() { 
    alertDialog = new AlertDialog.Builder(context).create(); 
    alertDialog.setTitle("Login Status"); 

} 

@Override 
protected void onPostExecute(String result) { 
    alertDialog.setMessage(result); 
    alertDialog.show(); 
    if (result.equals("Login Success")); 
    Intent myIntent = new Intent(this, Pagina1.class); // Im facing problem here 
    startActivity(myIntent); // Im facing problem here 

} 

@Override 
protected void onProgressUpdate(Void... values) { 
    super.onProgressUpdate(values); 
} 
} 

Start Activity error

Cannot resolve constructor

Ich versuche, einigen einfachen Code und mein Android hinzufügen es nicht erkennen.

+0

Sehen Sie die Bilder, die ich hochgeladen habe, um mein Problem zu verstehen. –

+0

Funktioniert es jetzt bro? – Vucko

Antwort

0

Bro, Ihr Problem ist, dass Sie this in dem Intent vorbei sind, und this ist derzeit die AsyncTask die NICHT von etwas abgeleitet ist, die Context (Aktivitäten haben Context) hat. Ersetzen Sie einfach diese Zeile mit dieser:

startActivity(new Intent(context, Pagina1.class));} 
//context being the field you initialize in the constructor 

Und das wird funktionieren. Ich weiß, dass Sie wahrscheinlich irgendwo gefunden haben, dass dies der richtige Weg ist, um die Aktivität zu starten:

startActivity(new Intent(this, YourClass.class)); 

Welche es ist, wenn es von einer anderen Activity ist, da der erste Parameter des Intent() Konstruktor Context ist, welche Aktivitäten habe es getan. Fragments, AsyncTasks usw. sind nicht von Context abgeleitet und daher können Sie nicht einfach this anrufen, wenn Sie versuchen, startActivity von ihnen.

+0

Danke, das hat mein Problem gelöst! Dein der beste Bruder. –

+0

Sicher Ding Kumpel. Viel Glück in Ihren folgenden Bemühungen. – Vucko

0

Versuchen Sie, Ihr Android Studio neu zu starten. Und auch prüfen, ob Sie in Manifest hinzugefügt haben oder nicht.

0

Versuchen Sie, diese

Intent myIntent = new Intent (this, Pagina1.class);

In oben genannten Anweisung dieser zeigen Sie auf das aktuelle Klassenobjekt nicht, Aktivität oder Kontext der Anwendung. Sie müssen den Anwendungskontext angeben. Weil die aktuelle Klasse keine Aktivität ist. Obige Aussage sollte wie werden diese

diese Aussage Versuchen

Intent myIntent = new Intent(getApplicationContext(), Pagina1.class); 

obige Aussage in Ihrem onPostExecute() Verfahren ersetzen.

+0

Warum sollte er "getApplicationContext()" verwenden, wenn er einfach das Feld "Context context" in der AsyncTask verwenden könnte? Ich habe auch schon geantwortet: D – Vucko

Verwandte Themen