2016-04-01 28 views
0

アンドロイドスタジオを使用してアンドロイドアプリを作成しています。ログインページでは、PHPを使用してMYSQLデータベースに保存されている詳細とユーザーのユーザー名とパスワードの詳細を確認し、入力された詳細が成功したか失敗したかをユーザーに示します。ログインが成功した場合、私は現在新しい活動を開くことができません。誰でもこの助けてくれますか?ありがとうございました。ログインが成功した後に新しいアクティビティを開くアンドロイドスタジオ

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.10/stafflogin.php"; 
     String createAccount_url = "http://192.168.1.10/staffcreateaccount.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"); 
       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(); 


    } 

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

} 
+0

あなたはどんな結果を得ていますか? –

+0

ログインが成功したかどうかを確認するメッセージが表示されます。メッセージはPHPファイルから取得されます。 – PeterJenkin

+0

onPostExecuteメソッドを使用して新しいアクティビティを開始する – user3641702

答えて

1

onPostExecute方法に追加この

if(result!=null && result.equals("successful")){ 
Intent intent = new Intent(LoginActivity.this,NextActivity.class); 
startActivity(intent); 
} 

私が "成功" でサンプルcode.pleaseの使用正しい値を書いた、LoginActivity、NextActivity。 onPostExecuteで

0

あなたが成功したログインまたは成功しない のため...メッセージを取得している言ったように、あなたのような新しいアクティビティを開くことができますが... ()..

if(result!=null && result.equalsIgnoreCase(message from PHP on succesful)) 
{ 
Intent intent = new Intent(context, NextPage.class); 
      startActivity(intent); 
      finish(); 
} 

希望これがお手伝いします..

0

成功応答コードを200(ステータスOK)とすると仮定します。ここであなたが試みることができます。

public class BackgroundWorker extends AsyncTask<String, Void, String> { 
    ... 
    BackgroundWorker (Context ctx) { 
    context = ctx.getApplicationContext(); 
    } 
    boolean statusOk = false; 

     @Override 
     protected String doInBackground(String... params) { 
      ... 
      InputStream inputStream = httpURLConnection.getInputStream(); 
      BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(inputStream, "iso-8859-1")); 
      String result = ""; 
      String line = ""; 
      int statusCode = httpURLConnection.getResponseCode(); //get response code 

      if (statusCode == HttpURLConnection.HTTP_OK) { 
       while ((line = bufferedReader.readLine()) != null) { 
        result += line; 
       } 
       bufferedReader.close(); 
       statusOk = true; 
       return result; 
      } 
     } 

     @Override 
     protected void onPostExecute(String result) { 
      if (statusOk) { 

       Intent intent = new Intent(context, MainPage.class);// replace MainPage with the activity you want to start 
       context.startActivity(intent); 
      } 

     } 
    } 
0

は、あなたがphpファイルを実行した後、結果を取得しているので、あなたは新しいactivityを開始するonPostExecute()メソッドを使用することができます。そして したいあなたはcode

@Override 
    protected void onPostExecute(String result) { 
     if(result!=null && results.equals("what ever you receive from the php"){ 
      Intent i= new Intent(this,theNameOfTheActivityToBeOpen.class); 
      i.putExtra("nameYouWantToReferInOtherActivity",result); 
      startActivity(i); 
    } 
    else{ 
     } 
      alertDialog.setMessage(result); 
      alertDialog.show(); 

次使用することにより、ここから開くしようとしている新しいactivitydataを渡すことができれば、新たな活動の使用に送られるもの次のコードを受信する

Bundle anyNameForYourBundle=getIntent().getExtras(); 
    //since a String is passed 
    String temp = anyNameForYourBundle.getString("nameYouWantToReferInOtherActivity"); 
+0

'doInBackground'メソッドから返されるものは自動的に' onPostExecute'メソッドに渡されるので、 'onPostExecute'に' result'の値を渡すことができます –

0

これを試してみてください

public class BackgroundWorker extends AsyncTask<String, Void, String> { 
    ... 
BackgroundWorker (Context ctx) { 
context = ctx.getApplicationContext(); 
} 
boolean statusOk = false; 

    @Override 
    protected String doInBackground(String... params) { 
     ... 
     InputStream inputStream = httpURLConnection.getInputStream(); 
     BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(inputStream, "iso-8859-1")); 
     String result = ""; 
     String line = ""; 
     int statusCode = httpURLConnection.getResponseCode(); //get response code 

     if (statusCode == HttpURLConnection.HTTP_OK) { 
      while ((line = bufferedReader.readLine()) != null) { 
       result += line; 
      } 
      bufferedReader.close(); 
      statusOk = true; 
      return result; 
     } 
    } 

    @Override 
    protected void onPostExecute(String result) { 
     if (statusOk) { 

      Intent intent = new Intent(context, MainPage.class);// replace MainPage with the activity you want to start 
      context.startActivity(intent); 
     } 

    } 
} 
関連する問題