Java android.os.NetworkOnMainThreadException-对于按钮单击

Java android.os.NetworkOnMainThreadException-对于按钮单击,java,android,networkonmainthread,Java,Android,Networkonmainthread,我有一个android.os.NetworkOnMainThreadException错误。我读过一些线程,为了避免这种情况,我们应该执行异步任务。然而,我不知道如何做按钮点击事件。下面是我的代码 MainActivity.java: public class MainActivity extends ActionBarActivity { @Override protected void onCreate(Bundle savedInstanceState) {

我有一个
android.os.NetworkOnMainThreadException
错误。我读过一些线程,为了避免这种情况,我们应该执行异步任务。然而,我不知道如何做按钮点击事件。下面是我的代码

MainActivity.java:

public class MainActivity extends ActionBarActivity {

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

        Button test = (Button) findViewById(R.id.testbutton);

        test.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                try {
                    DynamoDBClient dbClient = new DynamoDBClient();

                    dbClient.DynamoDB();
                    dbClient.createTable();

                } catch (Exception e) {
                    e.printStackTrace();
                }
            }
        });
    }
}

你们能给我一个关于如何使用AsyncTask进行按钮点击事件的建议吗?我试过了,但失败了。谢谢。

这是正确的方法:

public class DoYoreWork extends AsyncTask<String, Void, String> {
    @Override
    protected String doInBackground(String... params) {

        try {
            DynamoDBClient dbClient = new DynamoDBClient();
            dbClient.DynamoDB();
            dbClient.createTable();

        } catch (Exception e) {
            e.printStackTrace();
        }
        return null;

    }

    protected void onPostExecute(String page) {
        // onPostExecute
    }
}

您正在主线程上执行网络操作,只需获取一个线程并在该线程的run方法中写入
onClick()
code,然后在
onClick(
)中启动该线程,如下所示

Thread t=new Thread(){
    public void run(){
        try
        {
            DynamoDBClient dbClient = new DynamoDBClient();

            dbClient.DynamoDB();
            dbClient.createTable();


        } catch (Exception e)
        {
            e.printStackTrace();
        }
    }
}
在OnClick()中


希望这能对您有所帮助。

但我看到了您的个人资料,还有一个是您的笑话和ans:-)
Thread t=new Thread(){
    public void run(){
        try
        {
            DynamoDBClient dbClient = new DynamoDBClient();

            dbClient.DynamoDB();
            dbClient.createTable();


        } catch (Exception e)
        {
            e.printStackTrace();
        }
    }
}
test.setOnClickListener(new View.OnClickListener()
    {
        @Override
        public void onClick (View view)
        {
           t.start();
        }
      }