我决定学习android,我买了一本书你好,Android介绍谷歌的移动开发平台,第三版。我开始从本书开始执行我的第一个项目Sudoku,并且直到需要时才开始创建类Prefs extends PreferenceActivity。方法addPreferencesFromResource(R.XML.Settings)不再适用于PreferenceActivity。我试图解决这个问题两天没有成功。 我到目前为止!我读,我可以通过PerformanceFragment管理它,我要尽量请点击此链接:http://developer.android.com/reference/android/preference/PreferenceFragment.html,我也下:Android addPreferencesFromResource
public class Prefs extends PreferenceFragment {
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
addPreferencesFromResource(R.xml.settings);
}
}
它会出现一个错误和Eclipse推荐添加@TargetApi(Build.VERSION_CODES.HONEYCOMB) 时我做到了,我可以编译它并运行我的模拟器,但是当我按下菜单和设置时,我收到了消息。不幸的是,数独已经停止。
在mainActivity其他的代码,我有:
package org.example.sudoku;
import android.support.v7.app.ActionBarActivity;
import android.os.Bundle;
import android.view.Menu;
import android.view.MenuItem;
import android.content.Intent;
import android.view.View;
import android.view.View.OnClickListener;
import android.view.MenuInflater;
public class MainActivitySudoku extends ActionBarActivity implements OnClickListener{
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main_activity_sudoku);
//setting up click listener for all buttons
View continueButton = findViewById(R.id.continu_button);
continueButton.setOnClickListener(this);
View newButton = findViewById(R.id.new_button);
newButton.setOnClickListener(this);
View aboutButton = findViewById(R.id.about_button);
aboutButton.setOnClickListener(this);
View exitButton = findViewById(R.id.exit_button);
exitButton.setOnClickListener(this);
}
// other codes...
@Override
public boolean onOptionsItemSelected(MenuItem item) {
switch(item.getItemId()){
case R.id.settings:
startActivity(new Intent(this, Prefs.class));
return true;
}
return false;
}
数独/ RES/XML/settings.xml的里面我有XML代码:
<?xml version="1.0" encoding="utf-8"?>
<PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android" >
<CheckBoxPreference
android:key="music"
android:title="@string/music_title"
android:summary="@string/music_summary"
android:defaultValue="true" />
<CheckBoxPreference
android:key="hints"
android:title="@string/hints_title"
android:summary="@string/hints_sammary"
android:defaultValue="true" />
</PreferenceScreen>
Last thing to mention is AndroidManifest Sudoku/bin/AndroidManifest.xml I have following codes:
$ <?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="org.example.sudoku"
android:versionCode="1"
android:versionName="1.0" >
<uses-sdk
android:minSdkVersion="10"
android:targetSdkVersion="21" />
<application
android:allowBackup="true"
android:icon="@drawable/ic_launcher"
android:label="@string/app_name"
android:theme="@style/AppTheme" >
<activity
android:name=".MainActivitySudoku"
android:label="@string/app_name" >
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
<activity android:name=".About"
android:label="@string/about_title"
android:theme="@android:style/Theme.Dialog" >
</activity>
<activity android:name=".Prefs"
android:label="@string/settings_title"
</activity>
</application>
</manifest>
那么,任何人都可以请帮我如何解决这个问题。我已经看过一些例子,但我无法弄清楚。此外,如果有人知道一本会更好地遵循练习的书,那会很棒!谢谢大卫