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

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
번호 제목 글쓴이 날짜 조회 수

ndk를 이용하여 일반 안드로이드 어플을 만들수가 있나요? [3]

  • biokk
  • 2015-07-25
  • 조회 수 943

3장 계산기 에러 file [2]

ndk 라이브러리추가 하는 질문입니다 [8]

  • ice179
  • 2015-02-11
  • 조회 수 732

ndk onTransact 함수에 대한 질문인데요 [1]

  • ice179
  • 2015-02-07
  • 조회 수 224

ledservice , 라이브러리 추가 관련한 질문입니다 [3]

  • ice179
  • 2015-02-04
  • 조회 수 226

ndk 함수에서 c언어 동작은 onTransact 에서만 동작하나요? [3]

  • ice179
  • 2015-02-03
  • 조회 수 350

android binder 의 onTransact(uint32_t code, ...)의 code값은 ... [1]

  • ice179
  • 2015-01-29
  • 조회 수 248

gpio 컨트롤 예제질문입니다. [3]

  • biokk
  • 2015-01-21
  • 조회 수 573

gpio 컨트롤관련하여 ledservice 가 바로 죽어 버리는현상이 나오는... [2]

  • biokk
  • 2015-01-17
  • 조회 수 202

안드로이드 ndk gpio컨트롤 하기 질문입니다. [2]

  • ice179
  • 2015-01-16
  • 조회 수 371

pluscalc 질문입니다. [1]

아..권한 하고 마운트 에서 막혀버리네요..ㅜㅜ [1]

다시 질문 드립니다.ㅜㅜ apk 설치문제입니다. [3]

hoffplay 컴파일 질문 입니다. [2]

hoplayer_core 질문입니다. [2]

ffmpeg 빌드관련 질문드립니다 file [6]

hoffplay 빌드시 sec_format.h / SEC_OMX_Def.h 없다고 나옵니다. [3]

너무 자주 질문드리는 것 같아 죄송해요 ^^; [1]

ffmpeg 빌드에러 [2]

동영상 파일을 열때 avformat_open_input문 사용문의 [2]

사용자 로그인