代码之家  ›  专栏  ›  技术社区  ›  PrakashT

使用函数将一个活动移动到另一个活动

  •  -1
  • PrakashT  · 技术社区  · 6 年前

    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

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

    这是我的代码我的问题是意图语句不能在GoUserActivity函数中工作 当我尝试在GoUserActivity内部运行时,它将引发运行时错误(NullPoniterException“Intent I=new Intent(MainActivity.this,com.example.prakash.cinihive.UserActivity.class);)

    1 回复  |  直到 6 年前
        1
  •  0
  •   Greg Moens    6 年前

    我认为,如果将AsyncTask作为一个内部类移动到MainActivity中,您会发现工作得更好。您将能够调用GoUserActivity(),而不必新建MainActivity的另一个实例,这是您永远不应该做的。