简体   繁体   中英

What is wrong in this jsoup code? (Android)

This is the code:

public class MainActivity extends Activity {

private TextView textView2;

private Button button2;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    textView2=(TextView)findViewById(R.id.textView1);
    button2=(Button)findViewById(R.id.button1);
    button2.setOnClickListener(new OnClickListener() {

        @Override
        public void onClick(View v) {
            String url="http://stackoverflow.com/";
                try{
                Document doc=Jsoup.connect(url).get();
                Elements elem=doc.select("meta[name=twitter:domain]");
                        String title1=elem.attr("content");
                        textView2.setText(title1);
            }
            catch(Exception e){

            }
        }
    });
}}

This is the xml code:

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:paddingBottom="@dimen/activity_vertical_margin"
android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
tools:context="com.example.jsouptest.MainActivity" >

<TextView
    android:id="@+id/textView1"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_alignParentLeft="true"
    android:layout_alignParentTop="true"
    android:layout_marginTop="111dp"
    android:text="TextView"
    android:textSize="100dp" />

<Button
    android:id="@+id/button1"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_alignLeft="@+id/textView1"
    android:layout_alignParentTop="true"
    android:layout_marginLeft="22dp"
    android:layout_marginTop="34dp"
    android:text="Display" />

It isn't displaying the content in the textview on clicking the button. I have added permission for internet in the manifest file.

You can not call Network on main thread. You must call async task to make network calls. When you click on button execute a async task and then do your stuff there.

Below Code will Help:

public class MainActivity extends Activity {

    TextView textView1;

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

        textView1 = (TextView) findViewById(R.id.textView1);

        Button b1 = (Button) findViewById(R.id.button1);
        b1.setOnClickListener(new OnClickListener() {

            @Override
            public void onClick(View v) {
                new GetStringTask().execute();
            }
        });
    }

    private class GetStringTask extends AsyncTask<String, Void, String> {

        @Override
        protected String doInBackground(String... params) {
            String url = "http://stackoverflow.com/";
            Document doc = null;
            try {
                doc = Jsoup.connect(url).get();
                Elements elem = doc.getElementsByTag("title");
                String title1 = elem.html();
                return title1;
            } catch (IOException e) {
                e.printStackTrace();
                return "Exception";
            }
        }

        @Override
        protected void onPostExecute(String title) {
            textView1.setText(title);
        }

    }

    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        getMenuInflater().inflate(R.menu.main, menu);
        return true;
    }

    @Override
    public boolean onOptionsItemSelected(MenuItem item) {
        int id = item.getItemId();
        if (id == R.id.action_settings) {
            return true;
        }
        return super.onOptionsItemSelected(item);
    }
}

the code above sets the TextView label to "Stack Overflow".

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM