android notepad设计,android之notepad

【IT168 技术文档】这个实例主要是对SDK中的Notepadv2Solution的修改和完善,因为本人在使用该sample发现一些错误和缺陷,主要是空指针异常。(1)Notepadv1.java:

package com.google.android.demo.notepad1;

import android.app.ListActivity;

import android.content.Intent;

import android.database.Cursor;

import android.os.Bundle;

import android.view.Menu;

import android.view.View;

import android.view.Menu.Item;

import android.widget.ListView;

import android.widget.SimpleCursorAdapter;

public class Notepadv1 extends ListActivity {

public static final int INSERT_ID = Menu.FIRST;

private static final int EXIT_ID = 0;

private static final int DELETE_ID = Menu.FIRST + 1;

private static final int ACTIVITY_EDIT = 1;

private static final int ACTIVITY_CREATE = 0;

private NotesDbAdapter mDbHelper;

private Cursor c;

/** Called when the activity is first created. */

@Override

public void onCreate(Bundle icicle) {

super.onCreate(icicle);

setContentView(R.layout.notepad_list);

mDbHelper = new NotesDbAdapter(this);

mDbHelper.open();

fillData();

}

@Override

public boolean onCreateOptionsMenu(Menu menu) {

boolean result = super.onCreateOptionsMenu(menu);

menu.add(0, INSERT_ID, R.string.menu_insert);

menu.add(0, EXIT_ID, R.string.exit_notes);

menu.add(0, DELETE_ID, R.string.menu_delete);

return result;

}

@Override

public boolean onOptionsItemSelected(Item item) {

switch (item.getId()) {

case INSERT_ID:

createNote();

return true;

case EXIT_ID:

finish();

return true;

case DELETE_ID:

mDbHelper.deleteNote(getListView().getSelectedItemId());

fillData();

return true;

}

return super.onOptionsItemSelected(item);

}

private void createNote() {

Intent i = new Intent(this, NoteEdit.class);

startSubActivity(i, ACTIVITY_CREATE);

}

private void fillData() {

// Get all of the notes from the database and create the item list

c = mDbHelper.fetchAllNotes();

startManagingCursor(c);

String[] from = new String[] { NotesDbAdapter.KEY_TITLE };

int[] to = new int[] { R.id.text1 };

// Now create an array adapter and set it to display using our row

SimpleCursorAdapter notes =

new SimpleCursorAdapter(this, R.layout.notes_row, c, from, to);

setListAdapter(notes);

}

@Override

protected void onListItemClick(ListView l, View v, int position, long id) {

super.onListItemClick(l, v, position, id);

c.moveTo(position);

Intent i = new Intent(this, NoteEdit.class);

i.putExtra(NotesDbAdapter.KEY_ROWID, id);

i.putExtra(NotesDbAdapter.KEY_TITLE, c.getString(

c.getColumnIndex(NotesDbAdapter.KEY_TITLE)));

i.putExtra(NotesDbAdapter.KEY_BODY, c.getString(

c.getColumnIndex(NotesDbAdapter.KEY_BODY)));

startSubActivity(i, ACTIVITY_EDIT);

}

@Override

protected void onActivityResult(int requestCode, int resultCode, String data, Bundle extras) {

super.onActivityResult(requestCode, resultCode, data, extras);

switch(requestCode) {

case ACTIVITY_CREATE:

if(extras == null)

break;

String title = extras.getString(NotesDbAdapter.KEY_TITLE);

String body = extras.getString(NotesDbAdapter.KEY_BODY);

mDbHelper.createNote(title, body);

fillData();

break;

case ACTIVITY_EDIT:

if(extras == null)

break;

Long rowId = extras.getLong(NotesDbAdapter.KEY_ROWID);

if (rowId != null) {

String editTitle = extras.getString(NotesDbAdapter.KEY_TITLE);

String editBody = extras.getString(NotesDbAdapter.KEY_BODY);

mDbHelper.updateNote(rowId, editTitle, editBody);

}

fillData();

break;

}

}

}

说明:

此activity主要是将为创建notepad做前期工作的,此外还做收尾工作,将从后台接受过来的数据显示出来。

图示:

70212081_1.jpg(2)NoteEdit.java:

package com.google.android.demo.notepad1;

import android.app.Activity;

import android.os.Bundle;

import android.view.View;

import android.widget.Button;

import android.widget.EditText;

public class NoteEdit extends Activity {

private EditText mTitleText;

private EditText mBodyText;

private Long mRowId;

@Override

protected void onCreate(Bundle icicle) {

super.onCreate(icicle);

setContentView(R.layout.note_edit);        mTitleText = (EditText) findViewById(R.id.title);

mBodyText = (EditText) findViewById(R.id.body);

Button confirmButton = (Button) findViewById(R.id.confirm);

mRowId = null;

Bundle extras = getIntent().getExtras();

if (extras != null) {

String title = extras.getString(NotesDbAdapter.KEY_TITLE);

String body = extras.getString(NotesDbAdapter.KEY_BODY);

mRowId = extras.getLong(NotesDbAdapter.KEY_ROWID);

if (title != null) {

mTitleText.setText(title);

}

if (body != null) {

mBodyText.setText(body);

}

}        confirmButton.setOnClickListener(new View.OnClickListener() {

public void onClick(View view) {

Bundle bundle = new Bundle();

bundle.putString(NotesDbAdapter.KEY_TITLE, mTitleText.getText().toString());

bundle.putString(NotesDbAdapter.KEY_BODY, mBodyText.getText().toString());

if (mRowId != null) {

bundle.putLong(NotesDbAdapter.KEY_ROWID, mRowId);

}

setResult(RESULT_OK, null, bundle);

finish();

}

});

}

}

说明:

接受前台的命令,开始创建notepad,并将数据传递到前台。注意if (extras != null) 可以可以防止输入数据为空时的空指针异常情况。

图示:

70212081_2.jpg(3)NotesDbAdapter.java:

package com.google.android.demo.notepad1;

import android.content.ContentValues;

import android.content.Context;

import android.database.Cursor;

import android.database.SQLException;

import android.database.sqlite.SQLiteDatabase;

import java.io.FileNotFoundException;

public class NotesDbAdapter {

public static final String KEY_TITLE="title";

public static final String KEY_BODY="body";

public static final String KEY_ROWID="_id";

private static final String DATABASE_CREATE =

"create table notes (_id integer primary key autoincrement, "

+ "title text not null, body text not null);";

private static final String DATABASE_NAME = "data";

private static final String DATABASE_TABLE = "notes";

private static final int DATABASE_VERSION = 2;

private SQLiteDatabase mDb;

private final Context mCtx;

public NotesDbAdapter(Context ctx) {

this.mCtx = ctx;

}

public NotesDbAdapter open() throws SQLException {

try {

mDb = mCtx.openDatabase(DATABASE_NAME, null);

} catch (FileNotFoundException e) {

try {

mDb =

mCtx.createDatabase(DATABASE_NAME, DATABASE_VERSION, 0,

null);

mDb.execSQL(DATABASE_CREATE);

} catch (FileNotFoundException e1) {

throw new SQLException("Could not create database");

}

}

return this;

}

public void close() {

mDb.close();

}

public long createNote(String title, String body) {

ContentValues initialValues = new ContentValues();

initialValues.put(KEY_TITLE, title);

initialValues.put(KEY_BODY, body);

return mDb.insert(DATABASE_TABLE, null, initialValues);

}

public boolean deleteNote(long rowId) {

return mDb.delete(DATABASE_TABLE, KEY_ROWID + "=" + rowId, null) > 0;

}

public Cursor fetchAllNotes() {

return mDb.query(DATABASE_TABLE, new String[] {

KEY_ROWID, KEY_TITLE, KEY_BODY}, null, null, null, null, null);

}

public Cursor fetchNote(long rowId) throws SQLException {

Cursor result = mDb.query(true, DATABASE_TABLE, new String[] {

KEY_ROWID, KEY_TITLE, KEY_BODY}, KEY_ROWID + "=" + rowId, null, null,

null, null);

if ((result.count() == 0) || !result.first()) {

throw new SQLException("No note matching ID: " + rowId);

}

return result;

}

public boolean updateNote(long rowId, String title, String body) {

ContentValues args = new ContentValues();

args.put(KEY_TITLE, title);

args.put(KEY_BODY, body);

return mDb.update(DATABASE_TABLE, args, KEY_ROWID + "=" + rowId, null) > 0;

}

}

说明:

数据库和数据库操作在里面。

(4)notepad_list.xml:

android:layout_width="wrap_content"

android:layout_height="wrap_content">

android:layout_width="wrap_content"

android:layout_height="wrap_content"/>

android:layout_width="wrap_content"

android:layout_height="wrap_content"

android:text="@string/no_notes"/>

(5)note_edi.xml:

android:orientation="vertical"

android:layout_width="fill_parent"

android:layout_height="fill_parent">

android:layout_width="fill_parent"

android:layout_height="wrap_content">

android:layout_height="wrap_content"

android:text="@string/title" />

android:layout_width="wrap_content"

android:layout_height="wrap_content"

android:layout_weight="1"/>

android:layout_height="wrap_content"

android:text="@string/body" />

android:layout_width="fill_parent"

android:layout_height="wrap_content"

android:layout_weight="1"

android:scrollbars="vertical" />

android:text="@string/confirm"

android:layout_width="wrap_content"

android:layout_height="wrap_content" />

(6)notes_row.xml:

xmlns:android="http://schemas.android.com/apk/res/android"

android:layout_width="wrap_content"

android:layout_height="wrap_content"/>

(7)strings.xml:

Notepad v1

No Notes Yet

Add Item

Exit Notepad

Delete Item

Title

Body

Confirm

Edit Note

(8)AndroidManifest.xml:

package="com.google.android.demo.notepad1">

### 回答1: 要在Android记事本上设置使用中文,您可以按照以下步骤进行操作: 1. 打开您的Android设备上的记事本应用程序。大多数设备默认已经安装有记事本应用程序。 2. 进入记事本的设置选项。您可以在记事本的主界面上找到一个齿轮形状的图标,点击它即可进入设置页面。 3. 在设置页面中,寻找语言设置选项。这个选项通常位于“常规”或“外观”等相关设置中。 4. 点击语言设置选项,进入语言选择页面。您会看到一个列表,其中列出了各种可用的语言。 5. 在语言列表中,找到并选择中文。您可以滚动浏览或使用搜索框快速定位。 6. 选择中文后,返回到记事本的主界面。您会发现应用程序已经切换为中文显示了。 现在,您已经成功将Android记事本设置为中文。您可以根据需要使用中文输入或阅读中文内容。希望这个回答对您有所帮助! ### 回答2: 要在Android Notepad(便签)应用中设置中文,可以按照以下步骤进行操作: 1. 打开Android设备上的应用程序列表,并找到Notepad(便签)应用。 2. 单击应用图标以打开该应用。 3. 在Notepad(便签)应用中,找到设置选项。通常可以在右上角的菜单按钮中找到。 4. 单击设置选项以进入设置界面。 5. 在设置界面中,浏览不同的选项,寻找关于语言或输入的设置选项。 6. 找到语言或输入设置选项后,单击进入该选项的子菜单。 7. 在语言或输入子菜单中,查找和选择中文作为首选语言。可以通过单击中文选项或切换开关将中文设置为默认语言。 8. 退出设置界面并返回Notepad(便签)应用。 9. 现在,Notepad(便签)应用将以中文显示,您可以使用中文输入法输入和编辑文本。 请注意,不同的Android设备和Notepad(便签)应用版本可能具有不同的设置界面和选项名称。如果上述步骤与您的设备不符,可以尝试在Notepad(便签)应用的帮助文档或在设备的设置菜单中寻找更具体的设置选项。 希望这些步骤能帮助您在Android Notepad(便签)应用程序中成功设置中文显示。 ### 回答3: 要在Android的记事本应用中设置中文,只需按照以下步骤操作: 1. 打开你的Android手机或平板上的记事本应用。记事本应用通常是预装在设备上的,你可以在应用列表中找到它。 2. 进入应用后,打开设置选项。在许多记事本应用中,设置选项通常是通过在屏幕上滑动来显示隐藏菜单栏。 3. 在设置菜单中,找到“语言”或“语言和地区”选项。这个选项可能在不同的应用中有所区别,但通常会提供选择与语言相关的设置。 4. 点击“语言”选项后,你会看到一个包含可用语言的列表。在这个列表中,找到“中文”或“Chinese”选项,然后点击选择。 5. 一旦选择了中文,记事本应用会立即应用该设置,并将应用界面的语言切换为中文。你可以在记事本应用的界面上看到这一变化。 请注意,有些记事本应用的设置选项可能与上述步骤略有不同,但大体上应该是相似的。如果你无法找到设置中文语言选项,你可以尝试进入设备的整体设置,然后找到语言或区域设置,将系统的语言设置为中文。这样一来,记事本应用的界面语言通常也会随之更改为中文。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值