我正在尝试创建一个自定义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

我从没收到“ In 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) {
    }
}


谢谢。

最佳答案

我确定您很早就想出了这一点,但是XML首选项文件中的开始和结束标记不匹配:

<com.example.testApp.SeekBarPreference></SeekBarPreference>

应该

<com.example.testApp.SeekBarPreference></com.example.testApp.SeekBarPreference>

关于java - Android seekbarpreference和显示值,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/20028447/

10-12 05:02