2016-03-26 25 views
0

İşte benim Java kodum. Benim sorunum, başka bir aktivite açmak için OnPostExecute'a kod eklediğimde. Android Studio’da yeniyim, bu yüzden ilk defa bu problemle karşılaşıyorum. Android'de onPostExecute yönteminden yeni etkinlik başlatamıyor

Start Activity error

Cannot resolve constructor

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); 
} 
} 

Bazı basit kod eklemek çalışıyorum ve benim Android tanımıyor.

+0

Sorunumu anlamak için yüklediğim resimleri görün. –

+0

Şimdi çalışıyor mu kardeşim? – Vucko

cevap

0

Bro, senin sorunun Niyet içinde this geçirildiğinden emin olduğunu ve this anda Context (Etkinlikler Bağlam var) sahip herhangi bir şey elde DEĞİL olduğunu AsyncTask olduğunu. Sadece şu satırı değiştirin:

Ve bu işe yarar. ben muhtemelen bu aktiviteyi başlatmak için doğru yol olduğunu bir yerde bulduk biliyorum: başka Activity den olduğunda Intent() yapıcısı ilk parametresi Context, etkinlikler, çünkü,

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

öyle var mı. Fragments, AsyncTasks, vb Context türetilmiş değildir ve bu nedenle bunlardan startActivity için çalışırken, yalnızca this arayamazsınız.

+0

Teşekkür ederim, bu benim problemimi çözdü! En iyi kardeşin. –

+0

Elbette ki eş. Aşağıdaki çabalarınızda iyi şanslar. – Vucko

0

Android stüdyosunu yeniden başlatmayı deneyin. Ayrıca manifesto ekleyip eklemediğinizi de kontrol edin.

0

bu

niyet myIntent = Yeni Hedefi (bu, Pagina1.class) deneyin; Yukarıdaki numaralı ifadede, bu, geçerli sınıf nesnesini, etkinliğini veya uygulamanın içeriğini belirtir. Uygulama bağlamını vermelisiniz. Çünkü mevcut sınıf bir etkinlik değildir. Bu

sizin onPostExecute() yönteminde açıklamada yukarıdaki bu ifadeyi

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

değiştirin deneyin gibi Üstü deyim haline gelmelidir.

+0

Neden "AsyncTask" içindeki 'Bağlam içeriği' alanını kullanabiliyorsa, getApplicationContext() işlevine sahip olsun? Ayrıca, ben zaten şunu yanıtladı: D – Vucko

İlgili konular