마스터Q&A 안드로이드는 안드로이드 개발자들의 질문과 답변을 위한 지식 커뮤니티 사이트입니다. 안드로이드펍에서 운영하고 있습니다. [사용법, 운영진]

오류가 발생했어요 도와주세요~~

0 추천

디버그를 통과해서 코드에는 오류가 없는 것 같은데 앱을 실행해서 검색버튼을 눌렀을때 오류가 뜨네요.

사전 프로그램을 만드는데 맨 처음 화면에 검색창을 놓고 검색 버튼을 눌렀을때 다음 액티비티에 리스트 형식으로 db내의 데이터가 표현되는 것인데요. 주석처리를 해서 알아본 결과         
Cursor cursor = DatabaseHelper.queryMasterTable(strSearchQuery);
가 있는 줄에서 앱을 실행하고 검색버튼을 누르면 오류메시지가 뜨네요.
 
이것은 첫번째 액티비티
public class MainActivity extends Activity {
    public static final String TAG = "DictionaryInfoView";

    EditText editSearch;
    DataListView listView;
    IconTextListAdapter adapter;
    Button btnSearch;
    String strSearch;
    InputMethodManager imm;

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

        imm = (InputMethodManager)getSystemService(Context.INPUT_METHOD_SERVICE);

        editSearch = (EditText) findViewById(R.id.editText);

        btnSearch = (Button) findViewById(R.id.searchView);
        btnSearch.setOnClickListener(new View.OnClickListener() {

            public void onClick(View v) {

                strSearch = editSearch.getText().toString();
                Intent intent = new Intent(MainActivity.this, SecondActivity.class);
                intent.putExtra("strSearch",strSearch.length());
                startActivity(intent);
            }
        });
    };
}

이것은 두번째 액티비티

public class SecondActivity extends Activity {

    public static final String TAG = "SecondActivity";

    DataListView listView;
    IconTextListAdapter adapter;
    InputMethodManager imm;
    String strSearch2;
    String strSearchQuery;

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

        Intent intent = getIntent();
        strSearch2 = intent.getStringExtra("strSearch");
        imm = (InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE);

        adapter = new IconTextListAdapter(this);

        listView = new DataListView(this);

        LinearLayout linLayout = (LinearLayout) findViewById(R.id.LayoutDicList);
        linLayout.addView(listView);

        strSearchQuery = strSearch2.concat("%");

        DatabaseHelper.openDatabase(DatabaseHelper.wordDatabaseFile);
        Cursor cursor = DatabaseHelper.queryMasterTable(strSearchQuery);

        AddCursorData(cursor);

        listView.setAdapter(adapter);

        listView.setOnDataSelectionListener( new OnDataSelectionListener () {

            public void onDataSelected(AdapterView parent, View v, int position, long id) {

                IconTextItem selectItem = (IconTextItem)adapter.getItem(position);

                Bundle bundle = new Bundle();
                bundle.putString("data0", selectItem.getData(0));
                bundle.putString("data1", selectItem.getData(1));

                Intent intent = new Intent( getApplicationContext(), DetailActivity.class );
                intent.putExtras(bundle);
                startActivity ( intent );
        }
        });
}

    protected void onDestroy() {
        super.onDestroy();

        DatabaseHelper.closeDatabase();
    }

     public void AddCursorData ( Cursor outCursor ) {

        int recordCount = outCursor.getCount();
        println("cursor count : " + recordCount + "\n");

        adapter.clear();

        int clasFromCol = outCursor.getColumnIndex("CLASFROM");
        int clasSoutCol = outCursor.getColumnIndex("CLASSOUT");

        Resources res = getResources();

         for (int i = 0; i < recordCount; i++) {
            outCursor.moveToNext();
            String clasFrom = outCursor.getString(clasFromCol);
            String clasSout = outCursor.getString(clasSoutCol);

            adapter.addItem(new IconTextItem(res.getDrawable(R.drawable.capsule1),clasSout,clasFrom));
        }

        outCursor.close();
    }

    public void println(String msg) {
        Log.d(TAG, msg);
    }

 

익명사용자 님이 2015년 2월 23일 질문
2015년 2월 23일 수정

3개의 답변

0 추천
오류가 발생했을때는 코드만 올리시는것보다 오류 로그를 함께 올리시는것이 더 빨리 해결하실 수 있습니다.
Gradler (109,780 포인트) 님이 2015년 2월 23일 답변
코드 자체에 문제는 없는 것 같고... 구조적으로 문제가 있는 것 같습니다.
0 추천

오류코드와

DatabaseHelper.queryMasterTable

이부분도 필요해보입니다.

nicehee (73,100 포인트) 님이 2015년 2월 23일 답변
코드 자체에는 오류가 없습니다. 신텍스 에러가 아니라 로지컬 에러 같습니다.

public static Cursor queryMasterTable(String strSearchWord ) {
        String aSQL = "select WORDFROM, WORDNAME, CLASFROM, CLASSOUT "
                + " from MASTER"
                + " where CLASSOUT like ?";

        String[] args = {strSearchWord};

        Cursor outCursor = db.rawQuery(aSQL, args);

        return (outCursor);
    }
0 추천
이것은 로그캣 값
02-23 17:52:36.853  32644-32644/com.firstproject.codename.northdictionary W/Bundle﹕ Key strSearch expected String but value was a java.lang.Integer.  The default value <null> was returned.
02-23 17:52:36.853  32644-32644/com.firstproject.codename.northdictionary W/Bundle﹕ Attempt to cast generated internal exception:
    java.lang.ClassCastException: java.lang.Integer cannot be cast to java.lang.String
            at android.os.Bundle.getString(Bundle.java:1061)
            at android.content.Intent.getStringExtra(Intent.java:4286)
            at com.firstproject.codename.northdictionary.SecondActivity.onCreate(SecondActivity.java:36)
            at android.app.Activity.performCreate(Activity.java:5220)
            at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1082)
            at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2036)
            at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2097)
            at android.app.ActivityThread.access$600(ActivityThread.java:137)
            at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1203)
            at android.os.Handler.dispatchMessage(Handler.java:99)
            at android.os.Looper.loop(Looper.java:137)
            at android.app.ActivityThread.main(ActivityThread.java:4885)
            at java.lang.reflect.Method.invokeNative(Native Method)
            at java.lang.reflect.Method.invoke(Method.java:511)
            at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:790)
            at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:557)
            at dalvik.system.NativeStart.main(Native Method)
02-23 17:52:36.863  32644-32644/com.firstproject.codename.northdictionary W/dalvikvm﹕ threadid=1: thread exiting with uncaught exception (group=0x41394438)
02-23 17:52:36.863  32644-32644/com.firstproject.codename.northdictionary E/AndroidRuntime﹕ FATAL EXCEPTION: main
    java.lang.RuntimeException: Unable to start activity ComponentInfo{com.firstproject.codename.northdictionary/com.firstproject.codename.northdictionary.SecondActivity}: java.lang.NullPointerException
            at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2072)
            at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2097)
            at android.app.ActivityThread.access$600(ActivityThread.java:137)
            at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1203)
            at android.os.Handler.dispatchMessage(Handler.java:99)
            at android.os.Looper.loop(Looper.java:137)
            at android.app.ActivityThread.main(ActivityThread.java:4885)
            at java.lang.reflect.Method.invokeNative(Native Method)
            at java.lang.reflect.Method.invoke(Method.java:511)
            at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:790)
            at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:557)
            at dalvik.system.NativeStart.main(Native Method)
     Caused by: java.lang.NullPointerException
            at com.firstproject.codename.northdictionary.SecondActivity.onCreate(SecondActivity.java:47)
            at android.app.Activity.performCreate(Activity.java:5220)
            at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1082)
            at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2036)
            at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2097)
            at android.app.ActivityThread.access$600(ActivityThread.java:137)
            at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1203)
            at android.os.Handler.dispatchMessage(Handler.java:99)
            at android.os.Looper.loop(Looper.java:137)
            at android.app.ActivityThread.main(ActivityThread.java:4885)
            at java.lang.reflect.Method.invokeNative(Native Method)
            at java.lang.reflect.Method.invoke(Method.java:511)
            at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:790)
            at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:557)
            at dalvik.system.NativeStart.main(Native Method)
 
익명사용자 님이 2015년 2월 23일 답변
...