简体   繁体   English

在AsyncTask中从SQLite数据库加载数据时活动中断

[英]Activity Crashed while loading data from SQLite database in AsyncTask

I have searched for my problem. 我已经搜索了我的问题。 The similar question is here but not the answer. 类似的问题在这里,但不是答案。

Here is my code of activity: 这是我的活动代码:

public class HistoryActivity extends AppCompatActivity {

RecyclerView recyclerView;
RecyclerReviewedLocaionAdaptor recyclerAdaptor;
ArrayList<String> id;
ArrayList<String> cnic;
ArrayList<String> details;
ProgressDialog progressDialog;
NumberDB numberDB;


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


    // recycler view

    recyclerView = (RecyclerView) findViewById(R.id.recyclerViewReviewedLocation);

    new loadData().execute();
    recyclerAdaptor = new RecyclerReviewedLocaionAdaptor(id, cnic, details);

    recyclerView.setAdapter(recyclerAdaptor);
    recyclerView.setLayoutManager(new LinearLayoutManager(this));

}

public void loadData()
{
    id=new ArrayList<String>();
    cnic=new ArrayList<String>();
    details=new ArrayList<String>();
    numberDB=new NumberDB(getApplicationContext(), "Users", null, 1);
    Cursor cursor=numberDB.getData();

    if (cursor.moveToFirst()){
        do{
            String idData = cursor.getString(cursor.getColumnIndex(NumberDB.KEY_ID));
            String cnicData = cursor.getString(cursor.getColumnIndex(NumberDB.sentFrom));
            String detailsData = cursor.getString(cursor.getColumnIndex(NumberDB.details));
            // do what ever you want here
            id.add(idData);
            id.add(cnicData);
            id.add(detailsData);
        }while(cursor.moveToNext());
    }
    cursor.close();
}



class loadData extends AsyncTask<Void, Void, Void>
{

    @Override
    protected Void doInBackground(Void... voids) {

        id.clear();
        cnic.clear();
        details.clear();
        try{
           loadData();

        }catch (Exception e)
        {
            Log.i("Database", "Error fetching Data");
        }

        return null;
    }


    @Override
    protected void onPostExecute(Void aVoid) {
        super.onPostExecute(aVoid);
        Toast.makeText(HistoryActivity.this, "Complete", Toast.LENGTH_SHORT).show();
    }
}

And the Error that I'm getting is: 我得到的错误是:

  E/AndroidRuntime: FATAL EXCEPTION: main
    Process: com.example.abdullahsaleem.meravote, PID: 31721
    java.lang.RuntimeException: Unable to start activity ComponentInfo{com.example.abdullahsaleem.meravote/com.example.abdullahsaleem.meravote.HistoryActivity}: android.view.WindowManager$BadTokenException: Unable to add window -- token null is not for an application
        at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2505)
        at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2577)

您要先初始化之前清除arrayList

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

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