2017-06-23 10 views
0

私は2つの問題があります。最初にトーストは私のPHPサーバからエミュレータでデータを取得しますが、アンドロイド5では実際の電話では取得できません。アプリケーションにはクラッシュはありませんが、Toastは空です。 2番目の問題:私はエミュレータでアプリケーションを実行し、ボタンのデータを空にすると、サーバーから受信した2番目のクリックデータをクリックします。実際の電話機のデータは受信されませんでしたが、エミュレータで受信されました - > AsyncTaskとURLを使用して

これは私の単純なPHPコードです:

<?php 
    echo "hi"; 
?> 

これはAsynctaskクラスです:

package com.example.hamed.supermarketone; 

import android.os.AsyncTask; 

import java.io.BufferedReader; 
import java.io.IOException; 
import java.io.InputStreamReader; 
import java.net.MalformedURLException; 
import java.net.URL; 
import java.net.URLConnection; 

public class AsyncTaskConnect extends AsyncTask { 
    public String link; 
    public AsyncTaskConnect(String link){ 
     this.link= link; 
    } 
    @Override 
    protected Object doInBackground(Object[] params) { 
     try { 
      URL mUrl = new URL(link); 
      URLConnection mConnecttion = mUrl.openConnection(); 
      BufferedReader mBuffReader = new BufferedReader(new InputStreamReader(mConnecttion.getInputStream())); 
      StringBuilder mStringBuilder = new StringBuilder(); 
      String line = null; 
      while ((line = mBuffReader.readLine()) !=null){ 
       mStringBuilder.append(line); 
      } 
      LoginPage.data=mStringBuilder.toString(); 
     } catch (MalformedURLException e) { 
      e.printStackTrace(); 
     } catch (IOException e) { 
      e.printStackTrace(); 
     } 
     return ""; 
    } 
} 

と私の活動:あなたの助けのための

package com.example.hamed.supermarketone; 

import android.content.Intent; 
import android.os.Bundle; 
import android.support.annotation.Nullable; 
import android.support.v7.app.AppCompatActivity; 
import android.text.InputType; 
import android.text.method.PasswordTransformationMethod; 
import android.view.View; 
import android.widget.CheckBox; 
import android.widget.CompoundButton; 
import android.widget.EditText; 
import android.widget.LinearLayout; 
import android.widget.TextView; 
import android.widget.Toast; 

public class LoginPage extends AppCompatActivity { 

    public static String data=""; 
    LinearLayout mLinearLayout_gotoLogin; 
    @Override 
    protected void onCreate(@Nullable Bundle savedInstanceState) { 



     super.onCreate(savedInstanceState); 
     setContentView(R.layout.login_page); 

     mLinearLayout_gotoLogin = (LinearLayout)findViewById(R.id.lnr_gotologin); 
     mLinearLayout_gotoLogin.setOnClickListener(new View.OnClickListener() { 
      @Override 
      public void onClick(View v) { 
       new AsyncTaskConnect("http://nikayand.com/app/").execute(); 
       if (!data.equals("")){ 
        Toast.makeText(G.context, data,Toast.LENGTH_SHORT).show(); 
       } 
      } 
     }); 

    } 
} 

おかげ

:-)
+0

にアクセスするための悪い方法だ

また、あなたはこのようなあなたの活動に静的変数にデータを送信すべきではないに

public static String data=""; LoginPage.data=mStringBuilder.toString(); 

:https://developer.android.com /training/basics/network-ops/index.html –

答えて

2

あなたはあなたのtoaを表示しますあなたの非同期タスクを実行した直後にデータが存在しないので、非同期タスクのonPostExecuteメソッドでトーストを表示する必要があります。一見の価値ありのデータ

+1

もっと説明できますか?私は初心者です! –

+0

可能な場合は、独自のコード –

+0

技術を書き、そこに*かもしれない*があるデータが、保証 –

関連する問題