2016-09-24 2 views
-1

Jeder bekomme ich Fehler bei der Verwendung von Intent in Android. Ich habe einen MainActivity von wo ich eine andere Klasse nennen namens Background so nach Einige Funktionen Login tun ich möchte Benutzerseite gehen, wenn es sich um ein sucesss.enter Code ist hier im meinem Code Befestigung hier Bitte helfenAbsicht in android Fehler

package com.example.user.mybookapp; 

import android.support.v7.app.AppCompatActivity; 
import android.os.Bundle; 
import android.view.View; 
import android.widget.EditText; 

public class MainActivity extends AppCompatActivity { 
EditText UsernameEt, PasswordEt; 

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_main); 
    UsernameEt = (EditText) findViewById(R.id.etusername); 
    PasswordEt = (EditText) findViewById(R.id.etpassword); 
} 

public void OnLogin(View view) { 
    String username = UsernameEt.getText().toString(); 
    String password = PasswordEt.getText().toString(); 
    String type = "login"; 


    BackgroundWorker backgroundWorker = new BackgroundWorker(this); 
    backgroundWorker.execute(type,username,password); 
} 

}

// BackgoundWorker Klasse

package com.example.user.mybookapp; 

import android.app.Activity; 
import android.app.AlertDialog; 
import android.content.Context; 
import android.content.Intent; 
import android.os.AsyncTask; 
import android.widget.Toast; 

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; 

/** 
* Created by user on 15-09-2016. 
*/ 
public class BackgroundWorker extends AsyncTask<String,Void,String> { 
public 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.4.2/login.php"; 
    if(type.equals("login")) 
    { 
     try { 
      //Context context = getApplicationContext(); 
      //Toast t=  Toast.makeText(ctx,"click",Toast.LENGTH_SHORT).show(); 
      //alertDialog = new AlertDialog.Builder(context).create(); 
      //alertDialog.setTitle("login status"); 
      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"); 
      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(); 
    String s=result.trim(); 
    if (s.equalsIgnoreCase("success")){ 
     Intent i =Intent(BackgroundWorker.this,User.class);//Problem 


    } 

} 

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

}

+0

Und das Problem ist ??? –

+0

Haben Sie in Logcat Fehler festgestellt? Hast du eine '' Deklaration für 'User' zu deinem Manifest hinzugefügt? Ist "Benutzer" eine "Aktivität"? Ich könnte eine Million Fragen stellen. Wir lesen keine Gedanken. Bitte teilen Sie uns genau mit, was Sie erwarten, was tatsächlich passiert und welche Fehler oder andere Meldungen Sie in logcat sehen. –

Antwort

0
Intent i =Intent(context,User.class); 

Dies sollte den Fehler beheben, die Absicht sollte mit dem aktuellen Kontext aufgerufen werden.

0
Intent i =Intent(context,User.class); 
context.startActivity(i); 

Dies funktioniert als BackgroundWorker.dies ist eine nicht-Aktivität Referenz.

0

Intent Konstruktor benötigt einen Kontext als ersten Parameter und Sie geben es AsyncTask. Sie sind nicht Gegenstand der Intent-Klasse Konstruieren mit anderen Worten richtig, haben Sie vergessen new keyword.This zu schreiben ist die Syntax ein Objekt zu erstellen: -

<Class> <objectName> = new <Class/Subclass>(constructor_params_separated_by_commas); 

Intent i =Intent(BackgroundWorker.this,User.class);//Problem 

Änderung es

Intent i =new Intent(context,User.class);//Problem solved 
context.startActivity(i); 
+0

Hallo harish, danke für die Hilfe, aber das Problem ist jetzt, wenn ich die App laufen lasse, sagt es "Leider hat die App aufgehört" –

+0

Überprüfen Sie Android Monitor Registerkarte und geben Sie mir Ausnahmeinformationen aus dem Protokoll, dann kann ich Ihnen helfen –

0
Intent intent = new Intent(mContext,SecondClass.class); 
intent.putExtra("KEY","Value"); 
startActivity(intent); 
//here KEY = the identifier of specific value 
//on other side of SecondClass Activity. catch this data using 
String res = getIntent().getStringExtra("KEY"); 
0

Wie in den Antworten oben erwähnt, ist das erste Problem der unpassende Kontext. Das zweite Problem besteht darin, dass Sie während der Ausführung der Hintergrundtask falsche Argumente in Ihrer Hintergrund-Worker-Klasse übergeben. Ihre AsyncTask Erweiterung:

AsyncTask<String, Void, String> 

zeigt, dass Sie String in doInBackground Methode übergeben müssen, während in dem obigen Code Sie versuchen, String Array zu erhalten, obwohl Sie String-Parameter von Ihrer Haupttätigkeit bestanden haben, dh

protected String doInBackground(String[] params) 

sollte

sein
protected String doInBackground(String... params) 

Hoffe, dass das Problem löst.