android错误中的意图

android错误中的意图,android,android-intent,Android,Android Intent,每个人在android中使用Intent时都会出错。我有一个main活动,在这里我调用了另一个名为BackgroundWorker的类,所以在完成一些登录功能后,如果成功,我想进入用户页面。在这里输入代码我在这里附加代码请帮助 package com.example.user.mybookapp; import android.support.v7.app.AppCompatActivity; import android.os.Bundle; import android.view.View

每个人在android中使用Intent时都会出错。我有一个main活动,在这里我调用了另一个名为BackgroundWorker的类,所以在完成一些登录功能后,如果成功,我想进入用户页面。在这里输入代码我在这里附加代码请帮助

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

//后台工作类

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);
}
package com.example.user.mybookapp;
导入android.app.Activity;
导入android.app.AlertDialog;
导入android.content.Context;
导入android.content.Intent;
导入android.os.AsyncTask;
导入android.widget.Toast;
导入java.io.BufferedReader;
导入java.io.BufferedWriter;
导入java.io.IOException;
导入java.io.InputStream;
导入java.io.InputStreamReader;
导入java.io.OutputStream;
导入java.io.OutputStreamWriter;
导入java.net.HttpURLConnection;
导入java.net.MalformedURLException;
导入java.net.URL;
导入java.net.urlcoder;
/**
*用户于2016年9月15日创建。
*/
公共类BackgroundWorker扩展异步任务{
公共语境;
警报对话框警报对话框;
BackgroundWorker(上下文ctx){
上下文=ctx;
}
@凌驾
受保护的字符串doInBackground(字符串[]参数)
{
字符串类型=参数[0];
字符串登录\u url=”http://192.168.4.2/login.php";
if(type.equals(“登录”))
{
试一试{
//Context=getApplicationContext();
//Toast t=Toast.makeText(ctx,“click”,Toast.LENGTH_SHORT).show();
//alertDialog=新建alertDialog.Builder(context.create();
//alertDialog.setTitle(“登录状态”);
字符串user_name=params[1];
字符串密码=参数[2];
URL=新URL(登录\ URL);
HttpURLConnection HttpURLConnection=(HttpURLConnection)url.openConnection();
httpURLConnection.setRequestMethod(“POST”);
httpURLConnection.setDoOutput(true);
httpURLConnection.setDoInput(true);
OutputStream OutputStream=httpURLConnection.getOutputStream();
BufferedWriter BufferedWriter=新的BufferedWriter(新的OutputStreamWriter(outputStream,UTF-8));
字符串post_data=URLEncoder.encode(“用户名”,“UTF-8”)+”=“+URLEncoder.encode(用户名,“UTF-8”)+”&”
+urlcoder.encode(密码,“UTF-8”)+“=”+urlcoder.encode(密码,“UTF-8”);
bufferedWriter.write(post_数据);
bufferedWriter.flush();
bufferedWriter.close();
outputStream.close();
InputStream InputStream=httpURLConnection.getInputStream();
BufferedReader BufferedReader=新的BufferedReader(新的InputStreamReader(inputStream,“iso-8859-1”);
字符串结果=”;
字符串行=”;
而((line=bufferedReader.readLine())!=null){
结果+=行;
}
bufferedReader.close();
inputStream.close();
httpURLConnection.disconnect();
返回结果;
}捕获(格式错误){
e、 printStackTrace();
}捕获(IOE异常){
e、 printStackTrace();
}
}
返回null;
}
@凌驾
受保护的void onPreExecute(){
alertDialog=新建alertDialog.Builder(context.create();
alertDialog.setTitle(“登录状态”);
}
@凌驾
受保护的void onPostExecute(字符串结果){
alertDialog.setMessage(结果);
alertDialog.show();
字符串s=result.trim();
如果(s.equalsIgnoreCase(“成功”)){
Intent i=Intent(BackgroundWorker.this,User.class);//问题
}
}
@凌驾
受保护的void onProgressUpdate(void…值){
super.onProgressUpdate(值);
}
}

这将修复错误,应使用当前上下文调用意图

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

这将作为BackgroundWorker工作。这是一个非活动引用。

Intent构造函数需要一个上下文作为第一个参数,您将为其指定AsyncTask。您没有正确构造意图类的对象,换句话说,您忘记编写
new
关键字。这是创建对象的语法:-

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

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

如上所述,第一个问题是不适当的上下文,第二个问题是在执行后台任务时在后台工作者类中传递错误的参数。您的异步任务扩展:

AsyncTask<String, Void, String>
应该是

protected String doInBackground(String... params)

希望这能解决问题。

问题是???您是否在logcat中查找错误?您是否已将
用户声明添加到您的清单中?
用户
活动
?我可以问一百万个问题。我们不读心。请确切地告诉我们您期望发生什么,实际发生了什么,以及您在logcat中看到了什么错误或其他消息。您好harish,谢谢您的帮助,但问题是现在当我运行应用程序时,它会说“不幸的是,应用程序已停止”检查Android监视器选项卡,并从日志中向我提供异常信息,然后我可以帮助您
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");
AsyncTask<String, Void, String>
protected String doInBackground(String[] params)
protected String doInBackground(String... params)