1

- 编辑此块中的主要代码 -
我正在编写的此代码在启动时出现问题。它启动应用程序 GUI 并显示“我们很抱歉,“Appname”已不幸停止工作。”

[这里是 logcat 错误][1]
我猜它与这里的启动代码有关:

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.dhd);

    DialogPreference dp = (DialogPreference) findPreference("mediavolume");
    dp.setOnPreferenceChangeListener(new OnPreferenceChangeListener() {

        public boolean onPreferenceChange(Preference preference,
                Object newValue) {
            SeekBar volumeBar = (SeekBar) findViewById(R.id.seekBar);
            final AudioManager manager = (AudioManager) getSystemService(Context.AUDIO_SERVICE);

            volumeBar.setMax(manager
                    .getStreamMaxVolume(AudioManager.STREAM_SYSTEM));
            volumeBar.setProgress(manager
                    .getStreamVolume(AudioManager.STREAM_SYSTEM));

            volumeBar
                    .setOnSeekBarChangeListener(new OnSeekBarChangeListener() {
                        @Override
                        public void onStartTrackingTouch(SeekBar seekBar) {
                            Toast.makeText(volman.this, "Starting", Toast.LENGTH_LONG).show();

                        }

                        @Override
                        public void onStopTrackingTouch(SeekBar seekBar) {
                            Toast.makeText(volman.this, "Now Stopping", Toast.LENGTH_LONG).show();

                        }
                        public void onProgressChanged(SeekBar seekBar,
                                int progress, boolean fromUser) {
                            manager.setStreamVolume(
                                    AudioManager.STREAM_SYSTEM, progress,
                                    AudioManager.FLAG_SHOW_UI);
                            Toast.makeText(volman.this, "Now going Silent", Toast.LENGTH_LONG).show();

                        }
                    });

            return false;
        }
    });
}

private DialogPreference findPreference(String string) {
    return null;
}

}

4

1 回答 1

3

您必须设置内容视图。

添加后super.onCreate(savedInstanceState);

setContentView(R.layout.your_layout);

编辑:

这就是发生的事情。您将此代码粘贴到您的活动中。

Eclipse 给你一个错误:“方法 findPreference(String) 未定义类型 volman”。这是正常的,因为您必须扩展PreferenceActivity而不是Activity.

您做了快速修复:创建方法 findPreference(String)

这创建了一个返回 null 的方法,但使您的代码编译。

这就是为什么你得到一个NullPointerException.

于 2012-07-06T18:18:55.937 回答