서적에 관한 질문 및 오류 등을 문의 할 수 있으며, 저자로부터 직접 답변을 받을 수 있습니다.

NDK 초반에 pluscalc 어플을 따라 만들었습니다.

그런데 setOnClickListener 에서 문제가 발생합니다.

이녀석만 없으면 실행은 잘 되고,, 이녀석이 있으면 어플 실행 도중에 강제종료 되고요.

우선 API 19 android 4.4 으로 만들었고요

버전 문제인줄 알았는데 핸드폰 버전에 맞춰서 해도 setOnClickListener 에서 문제가 발생합니다.


우선 밑의 소스는 pluscalcActivity.java  이고..


package com.example.pluscalc;


import android.os.Bundle;

import android.support.v4.app.Fragment;

import android.support.v7.app.ActionBarActivity;

import android.view.LayoutInflater;

import android.view.Menu;

import android.view.MenuItem;

import android.view.View;

import android.view.ViewGroup;

import android.widget.EditText;

import android.widget.TextView;



public class PluscalcActivity extends ActionBarActivity implements View.OnClickListener{


TextView tv;

EditText etFirst;

EditText etSecond;

plusForJNI pfj;

@Override

protected void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

setContentView(R.layout.activity_pluscalc);

//setContentView(R.layout.fragment_pluscalc);

tv = (TextView)findViewById(R.id.result);

etFirst = (EditText)findViewById(R.id.firstfield);

etSecond = (EditText)findViewById(R.id.secondfield);

pfj = new plusForJNI();

View btn;

btn = findViewById(R.id.Button01);

btn.setOnClickListener(this);


if (savedInstanceState == null) {

getSupportFragmentManager().beginTransaction()

.add(R.id.container, new PlaceholderFragment()).commit();

}

}


@Override

public boolean onCreateOptionsMenu(Menu menu) {


// Inflate the menu; this adds items to the action bar if it is present.

getMenuInflater().inflate(R.menu.pluscalc, menu);

return true;

}


@Override

public boolean onOptionsItemSelected(MenuItem item) {

// Handle action bar item clicks here. The action bar will

// automatically handle clicks on the Home/Up button, so long

// as you specify a parent activity in AndroidManifest.xml.

int id = item.getItemId();

if (id == R.id.action_settings) {

return true;

}

return super.onOptionsItemSelected(item);

}

public void onClick(View v)

{

String first = etFirst.getText().toString();

String second = etSecond.getText().toString();

int aa = Integer.decode(first);

int bb = Integer.decode(second);

tv.setText("" + pfj.addCalc(aa, bb));

}


/**

* A placeholder fragment containing a simple view.

*/

public static class PlaceholderFragment extends Fragment {


public PlaceholderFragment() {

}


@Override

public View onCreateView(LayoutInflater inflater, ViewGroup container,

Bundle savedInstanceState) {

View rootView = inflater.inflate(R.layout.fragment_pluscalc,

container, false);

return rootView;

}

}


}

이건 로그캣에 뜬 내용들 입니다...

 W/dalvikvm(28478): threadid=1: thread exiting with uncaught exception (group=0x4142c2a0)

 E/AndroidRuntime(28478): FATAL EXCEPTION: main

 E/AndroidRuntime(28478): java.lang.RuntimeException: Unable to start activity ComponentInfo{com.example.pluscalc/com.example.pluscalc.PluscalcActivity}: java.lang.NullPointerException

 E/AndroidRuntime(28478): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2110)

E/AndroidRuntime(28478): at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2135)

E/AndroidRuntime(28478): at android.app.ActivityThread.access$700(ActivityThread.java:140)

E/AndroidRuntime(28478): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1237)

 E/AndroidRuntime(28478): at android.os.Handler.dispatchMessage(Handler.java:99)

 E/AndroidRuntime(28478): at android.os.Looper.loop(Looper.java:137)

 E/AndroidRuntime(28478): at android.app.ActivityThread.main(ActivityThread.java:4921)

E/AndroidRuntime(28478): at java.lang.reflect.Method.invokeNative(Native Method)

 E/AndroidRuntime(28478): at java.lang.reflect.Method.invoke(Method.java:511)

 E/AndroidRuntime(28478): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1027)

E/AndroidRuntime(28478): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:794)

E/AndroidRuntime(28478): at dalvik.system.NativeStart.main(Native Method)

 E/AndroidRuntime(28478): Caused by: java.lang.NullPointerException

 E/AndroidRuntime(28478): at com.example.pluscalc.PluscalcActivity.onCreate(PluscalcActivity.java:36)

 E/AndroidRuntime(28478): at android.app.Activity.performCreate(Activity.java:5206)

 E/AndroidRuntime(28478): at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1094)

 E/AndroidRuntime(28478): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2074)

E/AndroidRuntime(28478): ... 11 more


로그캣 봐도 잘 모르겠고.. 디버깅 해도 왜 여기서 멈추는 지도 모르겠습니다..

NullPointerException 이발생하다는건 알겠는데 왜 이런 오류가 발생하는지 ...

핸드폰 문제인가 아니면... 코드가 문제인지..제가 실수로 잘 못 입력했다는지..

혹시 해서 그냥 버튼만 만들어도 setOnClickListener 에서 문제가 발생하는데요. 

최신 버전에서의 차이 때문일까요?





전호철

2014.04.05 20:16:23
*.86.236.164

btn을 Button으로 define하시고 findviewbyid에서 나온것을 Button으로 캐스팅해서 넣으세요

List of Articles
번호 제목 글쓴이 날짜 조회 수
103 ndk를 이용하여 일반 안드로이드 어플을 만들수가 있나요? [3] biokk 2015-07-25 1024
102 3장 계산기 에러 file [2] happy_hacking 2015-06-02 456
101 ndk 라이브러리추가 하는 질문입니다 [8] ice179 2015-02-11 820
100 ndk onTransact 함수에 대한 질문인데요 [1] ice179 2015-02-07 247
99 ledservice , 라이브러리 추가 관련한 질문입니다 [3] ice179 2015-02-04 341
98 ndk 함수에서 c언어 동작은 onTransact 에서만 동작하나요? [3] ice179 2015-02-03 362
97 android binder 의 onTransact(uint32_t code, ...)의 code값은 ... [1] ice179 2015-01-29 290
96 gpio 컨트롤 예제질문입니다. [3] biokk 2015-01-21 647
95 gpio 컨트롤관련하여 ledservice 가 바로 죽어 버리는현상이 나오는... [2] biokk 2015-01-17 224
94 안드로이드 ndk gpio컨트롤 하기 질문입니다. [2] ice179 2015-01-16 433
» pluscalc 질문입니다. [1] 여월광 2014-04-05 3898
92 아..권한 하고 마운트 에서 막혀버리네요..ㅜㅜ [1] 여월광 2014-03-09 7290
91 다시 질문 드립니다.ㅜㅜ apk 설치문제입니다. [3] 여월광 2014-03-07 9131
90 hoffplay 컴파일 질문 입니다. [2] 여월광 2014-03-03 5690
89 hoplayer_core 질문입니다. [2] 여월광 2014-03-03 4302
88 ffmpeg 빌드관련 질문드립니다 file [6] 시그인트 2014-02-11 4225
87 hoffplay 빌드시 sec_format.h / SEC_OMX_Def.h 없다고 나옵니다. [3] 네이쳐 2013-12-06 4874
86 너무 자주 질문드리는 것 같아 죄송해요 ^^; [1] 네이쳐 2013-12-05 4467
85 ffmpeg 빌드에러 [2] 네이쳐 2013-12-05 4743
84 동영상 파일을 열때 avformat_open_input문 사용문의 [2] 네이쳐 2013-12-04 4878

사용자 로그인