2014-01-26 4 views
0

Я новичок в android. Я беспокоюсь в течение 2 недель с помощью простых приложений для Android, которые я разрабатываю. В моем приложении я пытаюсь получить простой текст из php. Но каждый раз, когда я пытаюсь запустить приложение, он разбился. Мой код нижеандроид приложение сбой при запуске

package com.example.test; 

import java.io.IOException; 

import org.apache.http.HttpResponse; 
import org.apache.http.client.HttpClient; 
import org.apache.http.client.methods.HttpPost; 
import org.apache.http.impl.client.DefaultHttpClient; 
import org.apache.http.util.EntityUtils; 

import android.os.Bundle; 
import android.app.Activity; 
import android.view.Menu; 
import android.widget.TextView; 

public class MainActivity extends Activity { 

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

    HttpClient httpclient = new DefaultHttpClient(); 
    HttpPost httppost = new HttpPost("http://logger.net46.net/android/hello.php"); 
    try { 
     HttpResponse response = httpclient.execute(httppost); 
     final String str = EntityUtils.toString(response.getEntity()); 
     TextView tv = (TextView) findViewById(R.id.textView1); 
     tv.setText(str); 
    } 
    catch (IOException e) { 
     // TODO Auto-generated catch block 
     e.printStackTrace(); 
    } 



} 

@Override 
public boolean onCreateOptionsMenu(Menu menu) { 
    // Inflate the menu; this adds items to the action bar if it is present. 
    getMenuInflater().inflate(R.menu.main, menu); 
    return true; 
} 

}

я не могу узнать, где моя проблема. Пожалуйста, помогите мне.

+0

вы не можете подключиться к Интернету в основном потоке, используйте класс 'AsyncTask', чтобы получить данные из Интернета –

+1

Узнайте, как читать LogCat. Трассировка стека в logcat указывает вам, в чем проблема и где она находится. – Simon

ответ

3

Возможно, вы получаете NetWorkOnMainThreadException. Вы должны использовать Thread или AsyncTask для получения запроса на отправку по электронной почте и обновления ui в потоке ui.

Пример:

public class MainActivity extends Activity { 

    TextView tv; 
    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_main); 
     tv = (TextView) findViewById(R.id.textView1); 
     new TheTask().execute(); 
    } 
     class TheTask extends AsyncTask<Void,Void,String> 
     { 

     @Override 
     protected String doInBackground(Void... params) { 
      String str = null; 
      try 
      { 
       HttpClient httpclient = new DefaultHttpClient(); 
       HttpPost httppost = new HttpPost("http://logger.net46.net/android/hello.php"); 
       HttpResponse response = httpclient.execute(httppost); 
       str = EntityUtils.toString(response.getEntity());  
      } 
      catch (IOException e) { 
        // TODO Auto-generated catch block 
        e.printStackTrace(); 
       } 

      return str; 

     } 

     @Override 
     protected void onPostExecute(String result) { 
      // TODO Auto-generated method stub 
      super.onPostExecute(result); 
      tv.setText(result); 
     } 

     } 
} 

Привязать

enter image description here

+0

Спасибо за ваш ответ. Я пробовал ваш код. Но, к сожалению, мои данные не загружаются из php-файла. Не могли бы вы решить эту проблему? –

+0

@MushfiqulTuhin использует HttpGet вместо HttpPost. вы ничего не публикуете и убедитесь, что добавили интернет-разрешение в манифест – Raghunandan

+0

@MushfiqulTuhin, к счастью, тот же код и тот же url работает для меня. см. привязку. убедитесь, что вы добавили интернет-разрешение, а также убедитесь, что идентификатор, указанный для textview, из xml соответствует – Raghunandan

Смежные вопросы