2017-02-20 4 views
0

これはコードです。ユーザー資格情報がデータベースに入力されているかどうかをテストし、トーストのメッセージが表示されていない場合はそれを表示しますエラーメッセージを返します。トーストメッセージはボタンクリックでポップアップしません

ここに私がウェブサイトから見つけたものがあります。私はすべての指示に従い、以下のコードで終わりましたが、まだトーストは表示されません。

<?php 
$db_name = "korisnici"; 
$mysql_username = "Mpro"; 
$mysql_password = "prolinet"; 
$server_name = "192.168.1.198"; 
$conn = mysqli_connect($server_name,$mysql_username,$mysql_password,$db_name); 

if($conn) { 
    echo "Connection success"; 
} else { 
    echo "Faliure to connect"; 
} 

if(isset($_POST['username']) && isset($_POST['password'])) { 
    $user_name = $_POST['username']; 
    $user_pass = $_POST['password']; 
    $mysql_qry = "SELECT * FROM korisnici WHERE username = '$user_name' AND password = '$user_pass'"; 
    if(mysql_fetch_row($mysql_qry)){ 
     $response["success"] = 1; 
     echo json_encode($response); 

    } else{ 
     $response["error"]=2; 
     echo json_encode($response); 
    } 

} else { 
    $response["error"] = 3; 
    echo json_encode($response); 
} 
?> 

は、私がお邪魔して申し訳ありませんが、私はXamarinの初心者です:

using Android.App; 
using Android.Widget; 
using Android.OS; 
using Android.Views.InputMethods; 
using Android.Content; 
using Android.Views; 
using System; 
using System.Net; 
using System.Collections.Specialized; 
using Org.Json; 
using System.Text; 
namespace App 
{ 
    [Activity(Label = "App", MainLauncher = true, Icon = "@drawable/icon")] 
    public class MainActivity : Activity, Android.Views.View.IOnClickListener 
    { 
     EditText username, password; 
     Button signIn; 
     signInAsync sn; 
     protected override void OnCreate(Bundle bundle) 
     { 

      base.OnCreate(bundle); 
      SetContentView(Resource.Layout.Main); 
      initialize(); 
     } 
     public void initialize() 
     { 
      username = (EditText)FindViewById(Resource.Id.editText1); 
      password = (EditText)FindViewById(Resource.Id.editText2); 
      signIn = (Button)FindViewById(Resource.Id.button1); 
      signIn.SetOnClickListener(this); 
     } 
     public override bool OnTouchEvent(MotionEvent e) 
     { 
      InputMethodManager imm = (InputMethodManager)GetSystemService(Context.InputMethodService); 
      EditText username = (EditText)FindViewById(Resource.Id.editText1); 
      EditText password = (EditText)FindViewById(Resource.Id.editText2); 
      //Cisti fokus 
      username.ClearFocus(); 
      password.ClearFocus(); 
      //imm.HideSoftInputFromWindow(username.WindowToken, 0); 
      return base.OnTouchEvent(e); 
      //Sklanja tastaturu s ekrana na klik na pozadinu. 
     } 
     public void OnClick(View v) 
     { 
      switch (v.Id) 
      { 
       case Resource.Id.button1: 
        sn = new signInAsync(this); 
        sn.Execute(); 
        break; 
      } 
     } 
     public class signInAsync : AsyncTask 
     { 
      MainActivity mainActivity; 

      public signInAsync(MainActivity mainActivity) 
      { 
       this.mainActivity = mainActivity; 
      } 
      string username, password; 
      protected override void OnPreExecute() 
      { 
       base.OnPreExecute(); 

       username = mainActivity.username.Text; 
       password = mainActivity.password.Text; 
      } 
      protected override Java.Lang.Object DoInBackground(params Java.Lang.Object[] @params) 
      { 

       WebClient client = new WebClient(); 
       client.UseDefaultCredentials = true; 
       client.Proxy.Credentials = CredentialCache.DefaultCredentials; 
       Uri uri = new Uri("http://192.168.1.198/android/login.php"); 
       NameValueCollection parameters = new NameValueCollection(); 
       parameters.Add("username", username); 
       parameters.Add("password", password); 
       var response = client.UploadValues(uri, parameters); 
       var responseString = Encoding.UTF8.GetString(response); 
       JSONObject ob = new JSONObject(responseString); 
       if (ob.OptString("success").Equals("1")) 
       { 
        mainActivity.RunOnUiThread(() => 
        { 
         Toast.MakeText(mainActivity, "Uspješno ste se ulogovali", ToastLength.Short).Show(); 
        }); 
       }; 
       if (ob.OptString("error").Equals("2")) 
        Toast.MakeText(mainActivity, "Pogresno", ToastLength.Short).Show(); 
       if (ob.OptString("error").Equals("3")) 
        Toast.MakeText(mainActivity, "Error", ToastLength.Short).Show(); 
       return null; 
      } 

     } 
    } 
} 

は、ここに私のPHPファイルです。

+0

私の回答 –

答えて

0

で、このライン

Toast.MakeText(mainActivity, "Uspješno ste se ulogovali", ToastLength.Short).Show(); 

変更:

Toast.MakeText(mainActivity.this, "Uspješno ste se ulogovali", ToastLength.Short).Show(); 

は、あなたがのonPostExcuteでasyntask使用トースト()メソッドを使用しながら、成功または失敗にトーストを表示したい場合は、

+0

を確認してください。これを正解とマークして他の人に助けを求めてください –

+0

申し訳ありませんが、うまくいきませんでしたが、ありがとうございます。この識別子が予想される\tに変更された後、2つのエラーが発生し、 "、"が予想されます。 – SWALLOW

+0

@SWALLOW最新の回答を確認してください。あなたがいくつかのエラーが発生した場合はお気軽にお問い合わせしてlogcatを共有してください。 –

0

を役に立てば幸いにasynctask。

0

まず、トーストを表示する行が実行されていることを確認します。 Logクラスを使用してメッセージを印刷して、アプリケーションで何が起きているかを確認することができます。あなたがあなたの活動は、バックグラウンドスレッドから有効な状態にあることを確認することができない代わりにmainActivity

0

使用getContextまたはmainActivity.this。だから、むしろ、そのようなアプリケーションのコンテキストで活動のパスを渡すより:

public signInAsync(Context appContext) 

そして実行します。あなたが活動からsignInAsyncを呼び出すとき

Toast.MakeText(appContext,... 

だから、このようにそれを呼び出します。

signInAsync(this.ApplicationContext) 
0

関連する問題