使用功能将一个活动移至另一个活动

时间:2018-12-16 02:08:36

标签: android

MainActivity.java

public class MainActivity extends AppCompatActivity {


    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        user_name = (EditText) findViewById(R.id.user_name);
        password = (EditText)findViewById(R.id.password);
        submit_btn = (Button) findViewById(R.id.submit);

        submit_btn.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                Sender s = new Sender(v.getContext(),urlAddress,user_name,password);
                s.execute();

                cxt = getApplicationContext();
            }
        });
    }

    public void GoUserActivity(){
        Intent i = new Intent(MainActivity.this,com.example.prakash.cinihive.UserActivity.class);
        startActivity(i);
    }
}

Sender.java

package com.example.prakash.cinihive;

public class Sender extends AsyncTask<Void,Void,String> {
    Context c;
    String urlAddress;
    EditText user_name,password;

    String UserName,Password;

    ProgressDialog pd;

    MainActivity main = new MainActivity();

    public Sender(Context c, String urlAddress, EditText user_name, EditText password) {
        this.c = c;
        this.urlAddress = urlAddress;
        this.user_name = user_name;
        this.password = password;

        UserName = user_name.getText().toString();
        Password = password.getText().toString();
    }

    @Override
    protected void onPreExecute() {
        super.onPreExecute();

        pd = new ProgressDialog(c);
        pd.setTitle("send");
        pd.setMessage("Sending..Please wait");
        pd.show();
    }

    @Override
    protected String doInBackground(Void... voids) {
        return this.send();
    }

    @Override
    protected void onPostExecute(String response) {
        super.onPostExecute(response);
        pd.dismiss();

        if(response !=null){
            //Toast.makeText(c,response,Toast.LENGTH_LONG).show();
            //Log.d("Response",response);
            if(response.equals("false")){
                Toast.makeText(c,"Invalid Credentials",Toast.LENGTH_LONG).show();
            }
            else{

                main.GoUserActivity();
                //Toast.makeText(c,response,Toast.LENGTH_LONG).show();
            }
            user_name.setText("");
            password.setText("");


        }
        else{
            Toast.makeText(c,"Un succesfullll",Toast.LENGTH_LONG).show();
        }
    }

    public  String send(){
        HttpURLConnection con = Connector.connect(urlAddress);

        //Toast.makeText(c,con.toString(),Toast.LENGTH_LONG).show();
        if(con==null){
            Toast.makeText(c,"Connection Null",Toast.LENGTH_LONG).show();
            return null;
        }

        try{
            // Log.d("Connection status","Connection not null");
            OutputStream os = con.getOutputStream();

            BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(os,"UTF-8"));
            bw.write(new DataPack(UserName,Password).Packdata());

            bw.flush();
            bw.close();
            os.close();

            int responseCode = con.getResponseCode();

            Log.d("MYINT","Response Id :"+responseCode);

            if(responseCode==con.HTTP_OK){
                Log.d("Response code","Response code success");
                BufferedReader br = new BufferedReader(new InputStreamReader(con.getInputStream()));
                StringBuffer response = new StringBuffer();

                String line;

                while((line=br.readLine())!=null){
                    response.append(line);
                }

                br.close();

                return response.toString();
            }else{
                Log.d("Response code","Failure");
            }

        } catch (IOException e) {
            e.printStackTrace();
        }
        return null;
    }
}

这是我的代码我的问题是Intent语句在GoUserActivity功能中不起作用     同时,Intent语句在OnCreate函数中运行良好。 当我尝试在GoUserActivity内部运行时,它将引发运行时错误(NullPoniterException“ Intent i = new Intent(MainActivity.this,com.example.prakash.cinihive.UserActivity.class);”)

1 个答案:

答案 0 :(得分:0)

我认为,如果将AsyncTask移入MainActivity作为内部类,会发现事情会更好。您将可以调用GoUserActivity(),而不必新建另一个MainActivity实例,这是您永远都不应做的。