2014-06-11 1 views
-3

그래서 내 앱이 인터넷의 문자열 파일에서 텍스트를 가져와 표시하도록하려고합니다. 하지만 오류가 발생하지 않고 계속 충돌하기 때문에 문제가 어디에서 발생하는지 알 수 없습니다.인터넷에서 문자열 가져 오기와 관련된 문제

여기에 내 현재 코드의 복사본 (오류가 내 IDE로 표시되고 있지)

package cara.app; 

import java.io.BufferedReader; 
import java.io.IOException; 
import java.io.InputStream; 
import java.io.InputStreamReader; 

import org.apache.http.HttpEntity; 
import org.apache.http.HttpResponse; 
import org.apache.http.client.ClientProtocolException; 
import org.apache.http.client.methods.HttpGet; 
import org.apache.http.entity.BufferedHttpEntity; 
import org.apache.http.impl.client.DefaultHttpClient; 

import android.os.Build; 
import android.os.Bundle; 
import android.annotation.SuppressLint; 
import android.app.Activity; 
import android.content.res.Resources; 
import android.view.Menu; 
import android.view.View; 
import android.widget.Button; 
import android.widget.TextView; 


public class MainActivity extends Activity { 
int itemNumber = 1; 
@SuppressLint("NewApi") 
@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_main); 

    final Resources res = getResources(); 
    final Button exit = (Button) findViewById(R.id.ExitBtn); 

    exit.setText("Close"); 
    exit.setHeight(100); 

    exit.setOnClickListener(new View.OnClickListener() { 
     public void onClick(View v) { 
      finish(); 
      System.exit(0); 
     } 
    }); 

    final Button button = (Button) findViewById(R.id.HomeBtn); 
    button.setText("" + res.getString(R.string.News) + "\n\n" +  res.getString(R.string.Story_Title_1) + "\n\n" + res.getString(R.string.Story_Title_2) + "\n\n" + res.getString(R.string.Story_Title_3) + "\n\n" + res.getString(R.string.Story_Title_4) + "\n\n" + res.getString(R.string.Story_Title_5)); 

    button.setOnClickListener(new View.OnClickListener() { 
     public void onClick(View v) { 

        try { 
         OpenNews1(); 
        } catch (ClientProtocolException e) { 
         OpenNews(); 
         e.printStackTrace(); 
        } catch (IOException e) { 
         OpenNews(); 
         e.printStackTrace(); 
        } 
      } 
     }); 

        // Make sure we're running on Honeycomb or higher to use ActionBar APIs 
        if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.HONEYCOMB) { 
         // Show the Up button in the action bar. 
         getActionBar().setDisplayHomeAsUpEnabled(true); 
        } 

} 
public void selfDestruct(View view) { 
    // Boom 
} 


@SuppressLint("NewApi") 
@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; 
} 

public void OpenNews() 
{ 
    setContentView(R.layout.activity_open_news); 

    final Resources res = getResources(); 
    final Button next = (Button) findViewById(R.id.NextBtn); 
    final Button close = (Button) findViewById(R.id.CloseBtn); 
    final Button back = (Button) findViewById(R.id.BackBtn); 

    // Create the text view 
    final TextView textView = (TextView) findViewById(R.id.textView); 
    textView.setTextSize(22); 
    textView.setText(res.getString(R.string.Story_Title_1)); 

    final TextView textView1 = (TextView) findViewById(R.id.textView1); 
    textView1.setTextSize(20); 
    textView1.setText(res.getString(R.string.Story_1)); 

    next.setText("Next"); 
    next.setHeight(100); 
    next.setWidth(500); 

    close.setText("Close"); 
    close.setHeight(100); 
    close.setWidth(1000); 

    back.setText("Back"); 
    back.setHeight(100); 
    back.setWidth(500); 

    close.setOnClickListener(new View.OnClickListener() { 
     public void onClick(View v) { 
      finish(); 
      System.exit(0); 
     } 
    }); 

    next.setOnClickListener(new View.OnClickListener() { 
    public void onClick(View v) { 

     if(itemNumber == 1){ 
      textView.setText(res.getString(R.string.Story_Title_2)); 
      textView1.setText(res.getString(R.string.Story_2)); 
      itemNumber = 2; 
     } 
     else if(itemNumber == 2){ 
      textView.setText(res.getString(R.string.Story_Title_3)); 
      textView1.setText(res.getString(R.string.Story_3)); 
      itemNumber = 3; 
     } 
     else if(itemNumber == 3){ 
      textView.setText(res.getString(R.string.Story_Title_4)); 
      textView1.setText(res.getString(R.string.Story_4)); 
      itemNumber = 4; 
     } 
     else if(itemNumber == 4){ 
      textView.setText(res.getString(R.string.Story_Title_5)); 
      textView1.setText(res.getString(R.string.Story_5)); 
      itemNumber = 5; 
     } 
     else if(itemNumber == 5){ 
      textView.setText(res.getString(R.string.Story_Title_1)); 
      textView1.setText(res.getString(R.string.Story_1)); 
      itemNumber = 1; 
     } 
    } 


}); 

    back.setOnClickListener(new View.OnClickListener() { 
     public void onClick(View v) { 

      if(itemNumber == 1){ 
       textView.setText(res.getString(R.string.Story_Title_5)); 
       textView1.setText(res.getString(R.string.Story_5)); 
       itemNumber = 5; 
      } 
      else if(itemNumber == 2){ 
       textView.setText(res.getString(R.string.Story_Title_1)); 
       textView1.setText(res.getString(R.string.Story_1)); 
       itemNumber = 1; 
      } 
      else if(itemNumber == 3){ 
       textView.setText(res.getString(R.string.Story_Title_2)); 
       textView1.setText(res.getString(R.string.Story_2)); 
       itemNumber = 2; 
      } 
      else if(itemNumber == 4){ 
       textView.setText(res.getString(R.string.Story_Title_3)); 
       textView1.setText(res.getString(R.string.Story_3)); 
       itemNumber = 3; 
      } 
      else if(itemNumber == 5){ 
       textView.setText(res.getString(R.string.Story_Title_4)); 
       textView1.setText(res.getString(R.string.Story_4)); 
       itemNumber = 4; 
      } 
     } 


    }); 
} 



public void OpenNews1() throws ClientProtocolException, IOException 
{ 
setContentView(R.layout.activity_open_news); 

final Resources res = getResources(); 
final Button next = (Button) findViewById(R.id.NextBtn); 
final Button close = (Button) findViewById(R.id.CloseBtn); 
final Button back = (Button) findViewById(R.id.BackBtn); 
DefaultHttpClient httpclient = new DefaultHttpClient(); 

// Create the text view 
final TextView textView = (TextView) findViewById(R.id.textView); 
textView.setTextSize(22); 
textView.setText(res.getString(R.string.Story_Title_1)); 

final TextView textView1 = (TextView) findViewById(R.id.textView1); 
textView1.setTextSize(20); 

HttpGet httppost = new HttpGet("http://www.akiorourke.com/cara.nl/text.txt"); 
HttpResponse response = httpclient.execute(httppost); 
HttpEntity ht = response.getEntity(); 

BufferedHttpEntity buf = new BufferedHttpEntity(ht); 

InputStream is = buf.getContent(); 


BufferedReader r = new BufferedReader(new InputStreamReader(is)); 

StringBuilder total = new StringBuilder(); 
String line; 
while ((line = r.readLine()) != null) { 
    total.append(line + "\n"); 
} 

textView1.setText(total); 


next.setText("Next"); 
next.setHeight(100); 
next.setWidth(500); 

close.setText("Close"); 
close.setHeight(100); 
close.setWidth(1000); 

back.setText("Back"); 
back.setHeight(100); 
back.setWidth(500); 

close.setOnClickListener(new View.OnClickListener() { 
    public void onClick(View v) { 
     finish(); 
     System.exit(0); 
    } 
}); 

next.setOnClickListener(new View.OnClickListener() { 
public void onClick(View v) { 

    if(itemNumber == 1){ 
     textView.setText(res.getString(R.string.Story_Title_2)); 
     textView1.setText(res.getString(R.string.Story_2)); 
     itemNumber = 2; 
    } 
    else if(itemNumber == 2){ 
     textView.setText(res.getString(R.string.Story_Title_3)); 
     textView1.setText(res.getString(R.string.Story_3)); 
     itemNumber = 3; 
    } 
    else if(itemNumber == 3){ 
     textView.setText(res.getString(R.string.Story_Title_4)); 
     textView1.setText(res.getString(R.string.Story_4)); 
     itemNumber = 4; 
    } 
    else if(itemNumber == 4){ 
     textView.setText(res.getString(R.string.Story_Title_5)); 
     textView1.setText(res.getString(R.string.Story_5)); 
     itemNumber = 5; 
    } 
    else if(itemNumber == 5){ 
     textView.setText(res.getString(R.string.Story_Title_1)); 
     textView1.setText(res.getString(R.string.Story_1)); 
     itemNumber = 1; 
    } 
} 


}); 

back.setOnClickListener(new View.OnClickListener() { 
    public void onClick(View v) { 

     if(itemNumber == 1){ 
      textView.setText(res.getString(R.string.Story_Title_5)); 
      textView1.setText(res.getString(R.string.Story_5)); 
      itemNumber = 5; 
     } 
     else if(itemNumber == 2){ 
      textView.setText(res.getString(R.string.Story_Title_1)); 
      textView1.setText(res.getString(R.string.Story_1)); 
      itemNumber = 1; 
     } 
     else if(itemNumber == 3){ 
      textView.setText(res.getString(R.string.Story_Title_2)); 
      textView1.setText(res.getString(R.string.Story_2)); 
      itemNumber = 2; 
     } 
     else if(itemNumber == 4){ 
      textView.setText(res.getString(R.string.Story_Title_3)); 
      textView1.setText(res.getString(R.string.Story_3)); 
      itemNumber = 3; 
     } 
     else if(itemNumber == 5){ 
      textView.setText(res.getString(R.string.Story_Title_4)); 
      textView1.setText(res.getString(R.string.Story_4)); 
      itemNumber = 4; 
     } 
    } 


});}} 
+0

크래시가 발생하면 logcat보기에 뭔가가 있어야합니다. – joao2fast4u

+0

"예외는 아니지만 오류가 발생하지 않고 계속 충돌합니다. – Smutje

답변

1

당신이 UI 스레드에서 인터넷에 연결 시도했기 때문에 NetworkOnMainThreadException를 얻을 수 있어야합니다. 당신은 This Thread 귀하의 문제를 해결하기 위해 볼 수 있습니다, 당신은 AsyncTask 또는 처리기를 사용해야합니다.

당신은 다음 코드에서 해당 오류를 얻을 :

try { 
     OpenNews1(); 
    } catch (ClientProtocolException e) { 
     OpenNews(); 
     e.printStackTrace(); 
    } catch (IOException e) { 
     OpenNews(); 
     e.printStackTrace(); 
    } 

OpenNews1에 당신이 인터넷에 연결하려고.

관련 문제