尝试调用函数时Android应用程序崩溃

时间:2018-06-07 12:37:59

标签: java php android

我试图在服务器上使用php从mysql服务器加载一些数据,并且它可以工作,但是当我尝试从列表视图中更新数据时,应用程序崩溃了。

这是不起作用的代码,当我从btn onclicklistener中删除downloadJSON时,它工作得非常好,但我真的需要更新按钮才能工作

    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        Button btn = (Button)findViewById(R.id.button);
        listView = (ListView) findViewById(R.id.listView);
        downloadJSON("http://www.cryptocrea.com/test.php");
        btn.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                listView.setAdapter(null);
                downloadJSON("http://www.cryptocrea.com/test.php");
            }
        });
    }

以下是完整代码:https://pastebin.com/nWSWXEVJ

3 个答案:

答案 0 :(得分:0)

您正在按钮null上设置适配器onClick(),它会在设置列表后生成适配器null

listView.setAdapter(null);

从按钮单击中删除它,此处已设置适配器

ArrayAdapter<String> arrayAdapter = new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1, stocks);
        listView.setAdapter(arrayAdapter);

答案 1 :(得分:0)

您在此代码中犯了两个错误

  1. 请在函数外部放置'asynch'任务,而不是调用该函数,您可以直接调用'asynch'任务。
  2. 请不要在'asynch'任务的'doInBackground'方法中调用UI线程方法,请从post execute调用此方法

答案 2 :(得分:0)

您无需在下面写一行。

    EmpNum  BrandCodes
    ------  ----------
    51      100|101|102|103
    92      200|201|202

通过设置适配器(null),您的适配器正在设置空值。 使用set Android Array Adapter Simple项目列表

listView.setAdapter(null);

您可以通过在onCreate()和onButtonclicklistener中的asynctask中创建构造函数来提高代码效率

ArrayAdapter<String> arrayAdapter = new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1, stocks);
        listView.setAdapter(arrayAdapter);

像这样编写代码

 DownloadJSON getJSON = new DownloadJSON(""http://www.cryptocrea.com/test.php"");
        getJSON.execute();