首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Android应用与可观测性

Android应用与可观测性
EN

Stack Overflow用户
提问于 2015-09-18 14:30:57
回答 2查看 126关注 0票数 0

我正在android工作室上开发一个简单的应用程序。我使用的是“应用程序”、“可观察的”等等。我犯了这样的错误:

代码语言:javascript
复制
java.lang.RuntimeException: Unable to start activity ComponentInfo{id.wdharmana.doahindu/id.wdharmana.doahindu.MainActivity}: java.lang.ClassCastException: android.app.Application cannot be cast to id.wdharmana.doahindu.app.DoaApplication

第二错误

代码语言:javascript
复制
Caused by: java.lang.ClassCastException: android.app.Application cannot be cast to id.wdharmana.doahindu.app.DoaApplication

第三错误

代码语言:javascript
复制
at id.wdharmana.doahindu.MainActivity.onCreate(MainActivity.java:52)

这是我的完整MainActivity.java:

代码语言:javascript
复制
package id.wdharmana.doahindu;
import android.app.Activity;
import android.app.Dialog;
import android.app.ProgressDialog;
import android.app.SearchManager;
import android.content.Context;
import android.os.AsyncTask;
import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
import android.support.v7.widget.SearchView;
import android.view.Menu;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.AdapterView;
import android.widget.AdapterView.OnItemLongClickListener;
import android.widget.Button;
import android.widget.ListView;
import android.widget.TextView;
import android.widget.Toast;




import id.wdharmana.doahindu.adapter.ListJudulAdapter;
import id.wdharmana.doahindu.app.DoaApplication;
import id.wdharmana.doahindu.data.DefaultData;
import id.wdharmana.doahindu.helper.DoaHelper;
import id.wdharmana.doahindu.model.DoaModel;
import id.wdharmana.doahindu.model.DoaObserver;

import java.util.ArrayList;
import java.util.Observable;
import java.util.Observer;

public class MainActivity extends AppCompatActivity  implements Observer {

    private ListView lvJudul;
    private ArrayList<DoaModel> listJudul;
    private DoaHelper doaHelper;
    public ListJudulAdapter listJudulAdapter;
    private DoaApplication application;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        // TODO Auto-generated method stub
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        lvJudul = (ListView)findViewById(R.id.lvListJudul);

        listJudul = new ArrayList<DoaModel>();
        application = (DoaApplication) getApplication();
        application.getDoaObserver().addObserver(this);

        doaHelper = new DoaHelper(MainActivity.this);
        doaHelper.open();

        listJudul = doaHelper.getAllData();

        if (listJudul.size()>0) {
            bindData();
        }else{
            insertDefaultData();
        }

        lvJudul.setOnItemClickListener(new AdapterView.OnItemClickListener() {

            public void onItemClick(AdapterView<?> arg0, View arg1, int arg2,
                                    long arg3) {
                showMeaningDialog(MainActivity.this, listJudul.get(arg2));
            }
        });

        lvJudul.setOnItemLongClickListener(new OnItemLongClickListener() {

            public boolean onItemLongClick(AdapterView<?> arg0, View arg1,
                                           int arg2, long arg3) {
                deleteDialog(listJudul.get(arg2).getId());
                return false;
            }
        });



    }

    private void insertDefaultData() {
        // TODO Auto-generated method stub
        new StoreDefaultData().execute();
    }

    public void update(Observable observable, Object o) {
        if (o.equals(DoaObserver.NEED_TO_REFRESH)){
            bindData();
        }
    }

    private class StoreDefaultData extends AsyncTask<Void, Void, Void>{

        ProgressDialog mProgressDialog;

        @Override
        protected void onPreExecute() {
            // TODO Auto-generated method stub
            super.onPreExecute();

            mProgressDialog = new ProgressDialog(MainActivity.this);
            mProgressDialog.setTitle(getString(R.string.notify_input_data));
            mProgressDialog.setMessage(getString(R.string.text_please_wait));
            mProgressDialog.show();
        }

        @Override
        protected Void doInBackground(Void... params) {
            // TODO Auto-generated method stub

            for (int i = 0; i < DefaultData.defaultData.length; i++) {
                doaHelper.insert(DoaModel.getDoaModel(DefaultData.defaultData[i][0],
                        DefaultData.defaultData[i][1]));
            }

            listJudul = doaHelper.getAllData();

            return null;
        }

        @Override
        protected void onPostExecute(Void result) {
            // TODO Auto-generated method stub
            super.onPostExecute(result);
            mProgressDialog.dismiss();
            listJudulAdapter = new ListJudulAdapter(MainActivity.this, listJudul);
            lvJudul.setAdapter(listJudulAdapter);
        }

    }

    @Override
    protected void onDestroy() {
        if (doaHelper != null){
            doaHelper.close();
        }
        super.onDestroy();
    }

    public static void showMeaningDialog(final Activity activity, final DoaModel item) {
        final Dialog dialog = new Dialog(activity, R.style.AppCompatAlertDialogStyle);
        dialog.setContentView(R.layout.dialog_konten);
        dialog.setCancelable(true);

        TextView txtKonten = (TextView)dialog.findViewById(R.id.txtMeaning);
        TextView txtJudul = (TextView)dialog.findViewById(R.id.txtWord);
        Button btnTutup = (Button)dialog.findViewById(R.id.btnTutup);
        Button btnEdit = (Button)dialog.findViewById(R.id.btnEdit);

        txtKonten.setText(item.getKonten());
        txtJudul.setText(item.getJudul());

        btnEdit.setOnClickListener(new OnClickListener() {

            public void onClick(View v) {
                // TODO Auto-generated method stub
                //FormInputUpdateActivity.toFormInputUpdate(activity, item);
                dialog.dismiss();
            }
        });

        btnTutup.setOnClickListener(new View.OnClickListener() {

            public void onClick(View arg0) {
                // TODO Auto-generated method stub
                dialog.dismiss();
            }
        });

        dialog.show();

    }

    private void deleteDialog(final int id) {
        // TODO Auto-generated method stub
        final Dialog dialog = new Dialog(MainActivity.this, R.style.AppCompatAlertDialogStyle);
        dialog.setTitle("Hapus");
        //dialog.setContentView(R.layout.dialog_delete);
        dialog.setCancelable(true);

       // Button btnYes = (Button)dialog.findViewById(R.id.btnDeleteYes);
      //  Button btnCancel = (Button)dialog.findViewById(R.id.btnDeleteCancel);

       // btnYes.setOnClickListener(new OnClickListener() {

        //    public void onClick(View v) {
       //         // TODO Auto-generated method stub
       //         doaHelper.delete(id);
       //         dialog.dismiss();
       //         Toast.makeText(MainActivity.this, getString(R.string.text_success_delete), Toast.LENGTH_LONG).show();
       //         application.getDoaObserver().refresh();
       //     }
       // });

        //btnCancel.setOnClickListener(new View.OnClickListener() {

           // public void onClick(View arg0) {
                // TODO Auto-generated method stub
              //  dialog.dismiss();
           // }
        //});

        dialog.show();

    }

    public void bindData(){
        if (listJudul.size()>0) {
            listJudul.clear();
        }
        listJudul = doaHelper.getAllData();
        listJudulAdapter = new ListJudulAdapter(MainActivity.this, listJudul);
        lvJudul.setAdapter(listJudulAdapter);
        listJudulAdapter.notifyDataSetChanged();
    }

    @Override
    protected void onResume() {
        // TODO Auto-generated method stub
        super.onResume();
    }

    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        getMenuInflater().inflate(R.menu.menu_activity_main, menu);
        SearchManager searchManager =
                (SearchManager) getSystemService(Context.SEARCH_SERVICE);
        SearchView searchView =
                (SearchView) menu.findItem(R.id.action_search).getActionView();
        searchView.setSearchableInfo(
                searchManager.getSearchableInfo(getComponentName()));
        return true;
    }


}

我是DoaApplication.java

代码语言:javascript
复制
package id.wdharmana.doahindu.app;

import android.app.Application;

import id.wdharmana.doahindu.model.DoaObserver;

/**
 * Created by WDHARMANA on 9/18/2015.
 */
public class DoaApplication  extends Application {
    DoaObserver doaObserver;
    @Override
    public void onCreate() {
        super.onCreate();
        doaObserver = new DoaObserver();
    }

    public DoaObserver getDoaObserver(){
        return doaObserver;
    }
}

生成时没有错误。如果你有什么建议,请告诉我。提前谢谢。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2015-09-18 14:55:08

DoaApplication放入您的清单中,在<application>节点中作为android:name="id.wdharmana.doahindu.app.DoaApplication"放入

票数 3
EN

Stack Overflow用户

发布于 2015-09-18 14:57:49

请确保你的AndroidManifest.xml是这样的:

代码语言:javascript
复制
<application 
    android:name="id.wdharmana.doahindu.app.DoaApplication"
    ... >
        ...
</application>

我想你忘了把你的

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/32654557

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档