-3

So I'm trying to get my app to take text from a string file on the internet and display that. But it keeps crashing without giving me errors, so I don't know where the problem is occurring.

Here's a copy of my current code (no errors being shown by my 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;
        }
    }


});}}
Karab
  • 23
  • 3

1 Answers1

1

you must get NetworkOnMainThreadException because you have tried connect to internet on UI thread. you can see This Thread to solve your problem, you need use AsyncTask or Handler.

you get that error in following code:

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

in OpenNews1 you trying connect to internet.

Community
  • 1
  • 1
Shayan Pourvatan
  • 11,898
  • 4
  • 42
  • 63