全部博文(436)
分类: Java
2011-04-06 15:31:23
一、本周计划任务
本周继续延续上一周的内容,在
这个网址中练 习相关实验。
二、实验内容
1. 建立一个新工程,完成后结构树如图1所示。
图1 新建工程的结构树
2. 编写修改main.xml文件,如图2.
图2 main.xml文件
修改相关代码后,到graphic layout界面,会出现相应的结果。如图3
图3 输出界面
3. 这个实验是主要是练习编辑XML文件,目录能够被XML文件定义。选择该工程,右键点击new-others-android-Android XML file。如图4。按照图5设置完成后,点击finish,会出现如图6所示界面。
图4 新建XML文件
图5 XML文件相关设置
图6 menu.xml
点击ADD,在出现的选项卡里选择“Item”,如下图。
图7 添加Item元素
下面是item中包含的值,这定义了菜单的入口。每个工程只能有一个入口。
图8 定义menu.xml信息
4. 下面编辑preferences.java文件
OnCreateOptionsMenu:用于创建menu。
onOptionsItemSelected:一般在展示Toast时是硬代码的,之后会调用preferences 设置。如果想不用或者隐藏menu items,可以使用onPreparO
ptionsMenu,每次调用menu时,这个命令就会被调用一次。
图9 preferences.java代码
5. 下面运行模拟器。如图10.
图10 模拟器运行
6. Preferences用于保存应用所需的数据,他被当作关键值保存,intents允许从其他activity中打开。Preferences 的值同样也能被当做XML资源存储。下面新建一个preferences.xml的文件。如图11.
图11 新建preferences.xml
添加一个种类category、两个preferences:EditTextPreferences,分别叫做"User" 和"Password". 如图12—
图12 添加PreferenceCategory
图13 设置PreferenceCategory
图14 添加EditTextPreference
图14 为第一个EditTextPreference命名
图15 为第一个EditTextPreference命名
可以用一个Activity包含上面的preferences.xml,从PreferenceActivity延伸。这个activity可以装载一个preferences,通过 addPreferencesFromResource()定义资源。创建一个名为“hellopreferences”的类来装载preferences.xml。如图16.
图16 创建hellopreferces类
图17 hellopreferces中的代码
要想这个类别被android里可用,需要在AndroidManifest.xml里注册。双击AndroidMannifest.xml,进入application选项卡,如图18所示。
图18 注册hellopreferces类
图19 添加一个activity
图20 为创建的新类命名
7. 修改preferences.java中的代码。如下:
package android.preferences;
import android.app.Activity;
import android.os.Bundle;
import android.view.Menu;
import android.view.MenuInflater;
import android.view.MenuItem;
import android.widget.Toast;
import android.content.SharedPreferences;
import android.content.SharedPreferences.Editor;
import android.content.Intent;
import android.preference.PreferenceManager;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
public class preferences extends Activity {
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
Button button = (Button) findViewById(R.id.Button01);
// Initialize preferences
final SharedPreferences preferences = PreferenceManager.getDefaultSharedPreferences(this);
button.setOnClickListener(new OnClickListener() {
public void onClick(View v) {
String username = preferences.getString("username", "n/a");
String password = preferences.getString("password", "n/a");
Toast.makeText(
preferences.this,
"You entered user: " + username + " and password: "
+ password, Toast.LENGTH_LONG).show();
}
});
Button buttonChangePreferences = (Button) findViewById(R.id.Button02);
buttonChangePreferences.setOnClickListener(new OnClickListener() {
public void onClick(View v) {
Editor edit = preferences.edit();
String username = preferences.getString("username", "n/a");
// We will just revert the current user name and save again
StringBuffer buffer = new StringBuffer();
for (int i = username.length() - 1; i >= 0; i--) {
buffer.append(username.charAt(i));
}
edit.putString("username", buffer.toString());
edit.commit();
// A toast is a view containing a quick little message for the
// user. We give a little feedback
Toast.makeText(preferences.this,
"Reverted string sequence of user name.",
Toast.LENGTH_LONG).show();
}
});
}
public boolean onCreateOptionsMenu(Menu menu){
MenuInflater inflactor = getMenuInflater();
inflactor.inflate(R.menu.menu,menu);
return true;
}
public boolean onOptionsItemSelectd(MenuItem item){
switch (item.getItemId()) {
// We have only one menu option
case R.id.preferences:
// Launch Preference activity
Intent i = new Intent(preferences.this, preferences.class);
startActivity(i);
// Some feedback to the user
Toast.makeText(preferences.this,
"Here you can maintain your user credentials.",
Toast.LENGTH_LONG).show();
break;
}
return true;
}
}
遇到问题:查看代码时感觉还是比较陌生,不明白里面的函数的意义和逻辑。在运行时也并没有出现正确的结果。也许是在设置类和xml文件时出错。
三、下周计划
由于本周在代码中遇到了很大的问题,因此下周准备用一周的时间将android中如何使用资源如何调用资源部分弄清楚。下周还是回到书中,进行较为有调理地学习。