1. 程式人生 > >記賬本小程序7天開發記錄(第六天)

記賬本小程序7天開發記錄(第六天)

android開發 java exception hand ngs ava man 學生 eth

記賬本小程序的數據存儲實現準備使用xml文件進行存儲,xml文件作為輕量級數據的存儲個人認為比較適用於家庭記賬本的數據存儲,而且可以按時間進行存儲

今天使用Android開發Android下的學生基本信息管理系統並存儲在xml文件.

開發過程中出現這樣一個錯誤

技術分享圖片

Caused by: java.lang.NullPointerException: Attempt to invoke virtual method ‘java.lang.StringBuilder java.lang.StringBuilder.append(java.lang.String)‘ on a null object reference

找尋了許多案例最終發現

private StringBuilder newStringBuilder() {
        // TODO Auto-generated method stub
        return null;
    }

在編寫該方法的時候少加了一個空行自動生成的方法返回值為NULL了,所以導致了空指針異常的錯誤。

找到了錯誤的原因,解決起來便得心應手。

MainActivity源代碼展示:

package com.fmd.studentmanager;

import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileOutputStream; import java.io.IOException; import android.app.Activity; import android.os.Bundle; import android.text.TextUtils; import android.view.Menu; import android.view.MenuItem; import android.view.View; import android.widget.EditText; import android.widget.RadioGroup; import
android.widget.Toast; public class MainActivity extends Activity { private EditText et_name; private EditText et_number; private RadioGroup rg_sex; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); et_name = findViewById(R.id.et_name); et_number = findViewById(R.id.et_number); rg_sex = findViewById(R.id.rg_sex); } public void save(View view){ String name = et_name.getText().toString().trim(); String number = et_number.getText().toString().trim(); if(TextUtils.isEmpty(name)||TextUtils.isEmpty(number)) { Toast.makeText(this, "學生的姓名或學號不能為空", 0).show(); return; } StringBuilder sb = new StringBuilder(); int id = rg_sex.getCheckedRadioButtonId(); String sex = "male"; if(id == R.id.rb_male) { //男性 sex = "male"; }else { //女性 sex = "female"; } //數據保存到文件 sb.append("<?xml version=\"1.0\" encoding=\"utf-8\"?>"); sb.append("<student>"); sb.append("<name>"); sb.append(name); sb.append("</name>"); sb.append("<number>"); sb.append(number); sb.append("</number>"); sb.append("<sex>"); sb.append(sex); sb.append("</sex>"); sb.append("</student>"); try { File file = new File(getFilesDir(),name+".xml"); FileOutputStream fos = new FileOutputStream(file); fos.write(sb.toString().getBytes()); fos.close(); Toast.makeText(this, "數據保存成功", 0).show(); } catch (Exception e) { Toast.makeText(this, "數據保存異常", 0).show(); e.printStackTrace(); } } @Override public boolean onCreateOptionsMenu(Menu menu) { // Inflate the menu; this adds items to the action bar if it is present. getMenuInflater().inflate(R.menu.main, 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); } }

結果展示圖:

技術分享圖片

技術分享圖片

記賬本小程序7天開發記錄(第六天)