Advertisement
Guest User

Untitled

a guest
Nov 26th, 2014
174
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 13.96 KB | None | 0 0
  1. 11-26 15:23:49.249: E/AndroidRuntime(6157): Caused by: java.lang.NullPointerException
  2. 11-26 15:23:49.249: E/AndroidRuntime(6157): at com.example.money.ExpenseCashFragment.getVoiceResult(ExpenseCashFragment.java:64)
  3. 11-26 15:23:49.249: E/AndroidRuntime(6157): at com.example.money.ExpenseCashFragment.onCreateView(ExpenseCashFragment.java:55)
  4. 11-26 15:23:49.249: E/AndroidRuntime(6157): at android.support.v4.app.Fragment.performCreateView(Fragment.java:1786)
  5. 11-26 15:23:49.249: E/AndroidRuntime(6157): at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:947)
  6. 11-26 15:23:49.249: E/AndroidRuntime(6157): at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:1126)
  7. 11-26 15:23:49.249: E/AndroidRuntime(6157): at android.support.v4.app.BackStackRecord.run(BackStackRecord.java:739)
  8. 11-26 15:23:49.249: E/AndroidRuntime(6157): at android.support.v4.app.FragmentManagerImpl.execPendingActions(FragmentManager.java:1489)
  9. 11-26 15:23:49.249: E/AndroidRuntime(6157): at android.support.v4.app.FragmentActivity.onStart(FragmentActivity.java:548)
  10. 11-26 15:23:49.249: E/AndroidRuntime(6157): at android.app.Instrumentation.callActivityOnStart(Instrumentation.java:1178)
  11. 11-26 15:23:49.249: E/AndroidRuntime(6157): at android.app.Activity.performStart(Activity.java:5216)
  12. 11-26 15:23:49.249: E/AndroidRuntime(6157): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2083)
  13.  
  14. public class InputActivity extends ActionBarActivity implements OnClickListener {
  15. private final int GOOGLE_STT = 1000;
  16. private ArrayList<String> mResult; //음성인식 결과 저장할 list
  17. String mResultTextView01;
  18. String mResultTextView02;
  19.  
  20. final String TAG = "InputActivity";
  21. int mCurrentFragmentIndex;
  22. public final static int FRAGMENT_ONE = 0;
  23. public final static int FRAGMENT_TWO = 1;
  24. public final static int FRAGMENT_THREE = 2;
  25. public final static int FRAGMENT_FOUR = 3;
  26.  
  27. @Override
  28. protected void onCreate(Bundle savedInstanceState) {
  29. super.onCreate(savedInstanceState);
  30. setContentView(R.layout.activity_input);
  31.  
  32. Button bt_oneFragment = (Button) findViewById(R.id.bt_oneFragment);
  33. Button bt_twoFragment = (Button) findViewById(R.id.bt_twoFragment);
  34. Button bt_threeFragment = (Button) findViewById(R.id.bt_threeFragment);
  35. Button bt_fourFragment = (Button) findViewById(R.id.bt_fourFragment);
  36. bt_oneFragment.setOnClickListener(this);
  37. bt_twoFragment.setOnClickListener(this);
  38. bt_threeFragment.setOnClickListener(this);
  39. bt_fourFragment.setOnClickListener(this);
  40.  
  41.  
  42. mCurrentFragmentIndex = FRAGMENT_ONE;
  43. fragmentReplace(mCurrentFragmentIndex);
  44.  
  45.  
  46. }
  47.  
  48. public void fragmentReplace(int reqNewFragmentIndex) {
  49.  
  50. Fragment newFragment = null;
  51. newFragment = getFragment(reqNewFragmentIndex);
  52.  
  53. // replace fragment
  54. final FragmentTransaction transaction = getSupportFragmentManager().beginTransaction();
  55.  
  56. transaction.replace(R.id.display_fragment, newFragment);
  57.  
  58. // Commit the transaction
  59. transaction.commit();
  60.  
  61. }
  62.  
  63. private Fragment getFragment(int idx) {
  64. Fragment newFragment = null;
  65.  
  66. switch (idx) {
  67. case FRAGMENT_ONE:
  68. newFragment = new ExpenseCashFragment();
  69. break;
  70. case FRAGMENT_TWO:
  71. newFragment = new ExpenseAccountFragment();
  72. break;
  73. case FRAGMENT_THREE:
  74. newFragment = new EarningCashFragment();
  75. break;
  76. case FRAGMENT_FOUR:
  77. newFragment = new EarningAccountFragment();
  78. break;
  79.  
  80. default:
  81. Log.d(TAG, "Unhandle case");
  82. break;
  83. }
  84.  
  85. return newFragment;
  86. }
  87.  
  88. @Override
  89. public void onClick(View v) {
  90.  
  91. switch (v.getId()) {
  92.  
  93. case R.id.bt_oneFragment:
  94. mCurrentFragmentIndex = FRAGMENT_ONE;
  95. fragmentReplace(mCurrentFragmentIndex);
  96. break;
  97. case R.id.bt_twoFragment:
  98. mCurrentFragmentIndex = FRAGMENT_TWO;
  99. fragmentReplace(mCurrentFragmentIndex);
  100. break;
  101. case R.id.bt_threeFragment:
  102. mCurrentFragmentIndex = FRAGMENT_THREE;
  103. fragmentReplace(mCurrentFragmentIndex);
  104. break;
  105. case R.id.bt_fourFragment:
  106. mCurrentFragmentIndex = FRAGMENT_FOUR;
  107. fragmentReplace(mCurrentFragmentIndex);
  108. break;
  109. default:
  110.  
  111. }
  112.  
  113. }
  114. public void on_bt_voice(View v){
  115.  
  116. Intent i = new Intent(RecognizerIntent.ACTION_RECOGNIZE_SPEECH); //intent 생성
  117. i.putExtra(RecognizerIntent.EXTRA_CALLING_PACKAGE, getPackageName()); //음성인식을 호출한 패키지
  118. i.putExtra(RecognizerIntent.EXTRA_LANGUAGE, "ko-KR"); //음성인식 언어 설정
  119. i.putExtra(RecognizerIntent.EXTRA_PROMPT, "말을 하세요.");
  120. InputActivity.this.startActivityForResult(i, GOOGLE_STT); //구글 음성인식 실행
  121. }
  122.  
  123.  
  124. @Override
  125. protected void onActivityResult(int requestCode, int resultCode, Intent data){
  126. if( resultCode == RESULT_OK && requestCode == GOOGLE_STT)
  127. {
  128. showResult(requestCode, data);
  129. }
  130. else{
  131. String msg = null;
  132.  
  133. switch(resultCode){
  134. case SpeechRecognizer.ERROR_AUDIO:
  135. msg = "오디오 입력 중 오류가 발생했습니다.";
  136. break;
  137. case SpeechRecognizer.ERROR_CLIENT:
  138. msg = "단말에서 오류가 발생했습니다.";
  139. break;
  140. case SpeechRecognizer.ERROR_INSUFFICIENT_PERMISSIONS:
  141. msg = "권한이 없습니다.";
  142. break;
  143. case SpeechRecognizer.ERROR_NETWORK:
  144. case SpeechRecognizer.ERROR_NETWORK_TIMEOUT:
  145. msg = "네트워크 오류가 발생했습니다.";
  146. break;
  147. case SpeechRecognizer.ERROR_NO_MATCH:
  148. msg = "일치하는 항목이 없습니다.";
  149. break;
  150. case SpeechRecognizer.ERROR_RECOGNIZER_BUSY:
  151. msg = "음성인식 서비스가 과부하 되었습니다.";
  152. break;
  153. case SpeechRecognizer.ERROR_SERVER:
  154. msg = "서버에서 오류가 발생했습니다.";
  155. break;
  156. case SpeechRecognizer.ERROR_SPEECH_TIMEOUT:
  157. msg = "입력이 없습니다.";
  158. break;
  159. }
  160.  
  161. if(msg != null)
  162. Toast.makeText(getApplicationContext(), msg, Toast.LENGTH_SHORT).show();
  163. }
  164. }
  165.  
  166. private void showResult(int requestCode, Intent data){
  167. String key = "";
  168. if(requestCode == GOOGLE_STT) //구글음성인식이면
  169. key = RecognizerIntent.EXTRA_RESULTS; //키값 설정
  170.  
  171. mResult = data.getStringArrayListExtra(key); //인식된 데이터 list 받아옴.
  172. String[] result = new String[mResult.size()]; //배열생성.
  173. mResult.toArray(result);// list 배열로 변환
  174. String i = result[0];
  175. String[] count = i.split(" ");
  176. mResultTextView01 = count[0];
  177. mResultTextView02 = count[1];
  178. if(requestCode == GOOGLE_STT){
  179. Log.d(TAG, "fjfj");
  180. ResultTofragment(mResultTextView01, mResultTextView02);
  181. }
  182. }
  183. public void ResultTofragment(String a, String b){
  184. Log.d(TAG, "fj");
  185. Bundle args = new Bundle();
  186. args.putCharSequence("t1", a);
  187. args.putCharSequence("t2", b);
  188. fragmentReplace(mCurrentFragmentIndex, args);
  189. }
  190.  
  191. public void fragmentReplace(int reqNewFragmentIndex, Bundle args) {
  192. Fragment newFragment = null;
  193. newFragment = getFragment(reqNewFragmentIndex);
  194.  
  195. if (args != null) {
  196. newFragment.setArguments(args);
  197. }
  198.  
  199. // replace fragment
  200. final FragmentTransaction transaction = getSupportFragmentManager().beginTransaction();
  201.  
  202. transaction.replace(R.id.display_fragment, newFragment);
  203.  
  204. // Commit the transaction
  205. transaction.commitAllowingStateLoss();
  206. }
  207. ///음성인식 결과값 전달 인텐트
  208.  
  209. /*public void ResultTofragment(String a, String b){
  210. Log.d(TAG, "fj");
  211. switch(mCurrentFragmentIndex)
  212. {
  213. case FRAGMENT_ONE:
  214. Intent intent1 = new Intent(InputActivity.this, ExpenseCashFragment.class);
  215. intent1.putExtra("t1", a);
  216. intent1.putExtra("t2", b);
  217. InputActivity.this.startActivity(intent1);
  218. break;
  219. case FRAGMENT_TWO:
  220. Intent intent2 = new Intent(InputActivity.this, ExpenseAccountFragment.class);
  221. intent2.putExtra("t1", a);
  222. intent2.putExtra("t2", b);
  223. InputActivity.this.startActivity(intent2);
  224. break;
  225. case FRAGMENT_THREE:
  226. Intent intent3 = new Intent(InputActivity.this, EarningCashFragment.class);
  227. intent3.putExtra("t1", a);
  228. intent3.putExtra("t2", b);
  229. InputActivity.this.startActivity(intent3);
  230. break;
  231. case FRAGMENT_FOUR:
  232. Intent intent4 = new Intent(InputActivity.this, EarningAccountFragment.class);
  233. intent4.putExtra("t1", a);
  234. intent4.putExtra("t2", b);
  235. InputActivity.this.startActivity(intent4);
  236. break;
  237. }
  238. }*/
  239.  
  240.  
  241. @Override
  242. public boolean onCreateOptionsMenu(Menu menu) {
  243. // Inflate the menu; this adds items to the action bar if it is present.
  244. getMenuInflater().inflate(R.menu.input, menu);
  245. return true;
  246. }
  247.  
  248. @Override
  249. public boolean onOptionsItemSelected(MenuItem item) {
  250. // Handle action bar item clicks here. The action bar will
  251. // automatically handle clicks on the Home/Up button, so long
  252. // as you specify a parent activity in AndroidManifest.xml.
  253. super.onOptionsItemSelected(item);
  254. switch(item.getItemId())
  255. {
  256. case R.id.item1:
  257. HomeItem();
  258. break;
  259.  
  260. default:
  261. }
  262. return true;
  263. }
  264.  
  265. private void HomeItem()
  266. {
  267. new AlertDialog.Builder(this)
  268. .setTitle("Go to Home")
  269. .setMessage("Want to go to Home?")
  270. .setNeutralButton("OK", new DialogInterface.OnClickListener() {
  271.  
  272. @Override
  273. public void onClick(DialogInterface dialog, int which) {
  274. Intent intent = new Intent(InputActivity.this, MainActivity.class);
  275. InputActivity.this.startActivity(intent);
  276. }
  277. }).show();
  278.  
  279. }
  280. }
  281.  
  282. public class ExpenseCashFragment extends Fragment implements OnClickListener,AdapterView.OnItemSelectedListener
  283. {
  284.  
  285. DatePicker datepicker;
  286. Spinner spinner;
  287. Button button;
  288. EditText cost, explanation;
  289. DBAdapter dbAdapter;
  290. String st; // Just for transferring the category data
  291.  
  292. @Override
  293. public View onCreateView(LayoutInflater inflater, ViewGroup container,
  294. Bundle savedInstanceState) {
  295. super.onCreate(savedInstanceState);
  296. View view = inflater.inflate(R.layout.expensecashfragment, container, false);
  297.  
  298. spinner = (Spinner) view.findViewById(R.id.spinner1);
  299. ArrayAdapter<CharSequence> adapter = ArrayAdapter.createFromResource(getActivity(),
  300. R.array.expenseCategory, android.R.layout.simple_spinner_item);
  301. // Specify the layout to use when the list of choices appears
  302. adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
  303. // Apply the adapter to the spinner
  304. spinner.setAdapter(adapter);
  305. spinner.setOnItemSelectedListener(this);
  306.  
  307.  
  308. datepicker = (DatePicker)view.findViewById(R.id.datepicker);
  309.  
  310. cost = (EditText)view.findViewById(R.id.listView_cost);
  311. explanation = (EditText)view.findViewById(R.id.listView_explanation);
  312. button = (Button)view.findViewById(R.id.enterButton);
  313. button.setOnClickListener(this);
  314. //If you want to use this in Activity in the Fragment use getActivity() instead
  315. getVoiceResult();
  316.  
  317. openDB();
  318. return view;
  319. }
  320.  
  321. public void getVoiceResult(){
  322. //
  323. Bundle args = getArguments();
  324. CharSequence voiceResult01 = args.getCharSequence("t1");
  325. CharSequence voiceResult02 = args.getCharSequence("t2");
  326. //
  327. cost.setText(""+voiceResult01);
  328. explanation.setText(""+voiceResult02);
  329. Log.d(getTag(), "ggggs");
  330. //
  331. }
  332. @Override
  333. public void onDestroy()
  334. {
  335. super.onDestroy();
  336. closeDB();
  337. }
  338.  
  339. private void closeDB()
  340. {
  341. dbAdapter.close();
  342. }
  343.  
  344.  
  345. private void openDB() {
  346. dbAdapter = new DBAdapter(getActivity());
  347. dbAdapter.openW();
  348.  
  349. }
  350.  
  351. public void enterData()
  352. {
  353. String date = setDate();
  354.  
  355. if(cost.getText().toString() == null)
  356. return;
  357.  
  358. int cost_value = Integer.parseInt(cost.getText().toString());
  359. String explanation_value = explanation.getText().toString();
  360. //Message.message(getActivity(), date + " " + st + " " + cost_value + " " + explanation_value );
  361. //category string is in the st
  362.  
  363. CashExpenseTable ce = new CashExpenseTable(date, st, cost_value, explanation_value);
  364. long id = dbAdapter.addCashExpense(ce);
  365.  
  366. if(id > 0)
  367. {
  368. Message.message(getActivity(), "Successfully inserted a row " + id);
  369. }
  370. else
  371. {
  372. Message.message(getActivity(), "Unsuccessful");
  373. }
  374. startActivity(new Intent(this.getActivity(), MainActivity.class));
  375.  
  376. }
  377. ////////////////////////////////////////////////////////// For the spinner
  378.  
  379. public void showDialog(View v)
  380. {
  381.  
  382. }
  383.  
  384. @Override
  385. public void onItemSelected(AdapterView<?> parent, View view, int position,long id) {
  386. TextView myText = (TextView) view;
  387. Toast.makeText(getActivity(), "You selected " + myText.getText(), Toast.LENGTH_SHORT).show();
  388. st = (String) myText.getText();
  389. }
  390.  
  391. @Override
  392. public void onNothingSelected(AdapterView<?> parent) {
  393. // TODO Auto-generated method stub
  394.  
  395. }
  396.  
  397. ///////////// For the datePicker
  398. public String setDate()
  399. {
  400. int day = datepicker.getDayOfMonth();
  401. int month = datepicker.getMonth() + 1;
  402. int year = datepicker.getYear();
  403. //Toast.makeText(getActivity(), "Today : " + year + "/" + month + "/" + day, Toast.LENGTH_LONG).show();
  404. return year + "-" + month + "-" + day;
  405. }
  406.  
  407. @Override
  408. public void onClick(View v)
  409. {
  410. switch (v.getId()) {
  411.  
  412. case R.id.enterButton:
  413. //Toast.makeText(getActivity(), "Input completed", Toast.LENGTH_SHORT).show();
  414. enterData();
  415. break;
  416.  
  417. default:
  418. }
  419. }
  420.  
  421.  
  422. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement