我正在尝试制作一个cusotm SeekBarPreference并向用户显示它的值。每次我点击菜单中的设置,我的应用程序崩溃,我不知道为什么。这是我到目前为止的代码。
MainActivity.java
//Within the MainActivity.java
@Override
public boolean onCreateOptionsMenu(Menu menu)
{
super.onCreateOptionsMenu(menu);
getMenuInflater().inflate(R.menu.settings_menu, menu);
return true;
}
@Override
public boolean onOptionsItemSelected(MenuItem item)
{
switch(item.getItemId())
{
case R.id.preferences:
Intent i2 = new Intent("com.example.testApp.PREFERENCES");
startActivity(i2);
break;
case R.id.exit:
finish();
break;
}
return false;
}
RES / XML /的preferences.xml
使用“com.example.testApp.SeekBarPreference”调用新类是否正确?
<?xml version="1.0" encoding="utf-8"?>
<PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android" >
<com.example.testApp.SeekBarPreference
android:title="Sensativity"
android:key="seekbar"
android:max="100"
android:defaultValue="50">
</SeekBarPreference>
</PreferenceScreen>
preferences.java
public class preferences extends PreferenceActivity
{
@Override
protected void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
addPreferencesFromResource(R.xml.preferences);
}
}
SeekBarPreference.java
我从来没有得到“在SBP中”的日志!因为应用程序崩溃了。我离开了存根并且没有填写其余代码,因为我无法访问日志。
public class SeekBarPreference extends Preference implements OnSeekBarChangeListener
{
public SeekBarPreference(Context context)
{
super(context);
Log.i("SBP", "In SBP!");
}
@Override
public void onProgressChanged(SeekBar arg0, int arg1, boolean arg2) {
}
@Override
public void onStartTrackingTouch(SeekBar arg0) {
}
@Override
public void onStopTrackingTouch(SeekBar arg0) {
}
}
感谢。
答案 0 :(得分:0)
我确定你很久以前就知道了这一点,但你的XML偏好文件中的开始和结束标记不匹配:
<com.example.testApp.SeekBarPreference>
</SeekBarPreference>
应该是
<com.example.testApp.SeekBarPreference>
</com.example.testApp.SeekBarPreference>