gpt4 book ai didi

java - 单击时显示对话框首选项

转载 作者:行者123 更新时间:2023-12-01 04:11:07 24 4
gpt4 key购买 nike

我有一个 PreferenceActivity,其中有一个偏好。我想单击此首选项将打开另一个类中存在的对话框。 Brightness 类包含要渲染的对话框。这是代码。

// This is the PreferenceActivity Class (Settings)
Preference bright;
bright = (Preference) this.findPreference("bri");
bright.setOnPreferenceClickListener( new OnPreferenceClickListener() {
public boolean onPreferenceClick(Preference preference) {

Brightness brightness = new Brightness();
brightness.ShowDialog();

return true;

}
});

亮度等级

public class Brightness extends Activity{

private SeekBar brightbar;
private int brightness;
@SuppressWarnings("unused")
private ContentResolver cResolver;
private Window window;
TextView txtPerc;

public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);

ShowDialog();

}


public void ShowDialog() {
final AlertDialog.Builder popDialog = new AlertDialog.Builder(getApplicationContext());
final LayoutInflater inflater = (LayoutInflater) this.getSystemService(LAYOUT_INFLATER_SERVICE);
final View Viewlayout = inflater.inflate(R.layout.dialog_brightness, (ViewGroup) findViewById(R.id.layout_dialog));

popDialog.setTitle("Set Brightness");
popDialog.setView(Viewlayout);

brightbar = (SeekBar) findViewById(R.id.brightbar);
txtPerc = (TextView) findViewById(R.id.txtPercentage);
cResolver = getContentResolver();
window = getWindow();
brightbar.setMax(255);
brightbar.setKeyProgressIncrement(1);

brightbar = (SeekBar) findViewById(R.id.brightbar);
txtPerc = (TextView) findViewById(R.id.txtPercentage);
cResolver = getContentResolver();
window = getWindow();
brightbar.setMax(255);
brightbar.setKeyProgressIncrement(1);

try
{
brightness = Settings.System.getInt(getContentResolver(), Settings.System.SCREEN_BRIGHTNESS);
float perc = (brightness /(float)255)*100;
txtPerc.setText((int)perc +" %");
}
catch (SettingNotFoundException e)
{
Log.e("Error", "Cannot access system brightness");
e.printStackTrace();
}

brightbar.setProgress(brightness);
brightbar.setOnSeekBarChangeListener(new OnSeekBarChangeListener()
{
public void onStopTrackingTouch(SeekBar seekBar)
{
Settings.System.putInt(getContentResolver(), Settings.System.SCREEN_BRIGHTNESS, brightness);
LayoutParams layoutpars = window.getAttributes();
layoutpars.screenBrightness = brightness / (float)255;
window.setAttributes(layoutpars);
}

public void onStartTrackingTouch(SeekBar seekBar)
{

}

public void onProgressChanged(SeekBar seekBar, int progress, boolean fromUser)
{


brightness = progress;

float perc = (brightness /(float)255)*100;
txtPerc.setText((int)perc +" %");
}
});

popDialog.setNeutralButton("Close",
new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int which) {
dialog.dismiss();
}

});

popDialog.create();
popDialog.show();

}
}

问题是,当我单击此首选项时,应用程序崩溃了!这是日志猫

11-11 18:03:57.788: E/AndroidRuntime(18672): FATAL EXCEPTION: main 11-11 18:03:57.788: E/AndroidRuntime(18672): java.lang.NullPointerException 11-11 18:03:57.788: E/AndroidRuntime(18672): at android.content.ContextWrapper.getApplicationContext(ContextWrapper.java:109) 11-11 18:03:57.788: E/AndroidRuntime(18672): at com.packagename.Brightness.ShowDialog(Brightness.java:39) 11-11 18:03:57.788: E/AndroidRuntime(18672): at com.packagename.Settings$1.onPreferenceClick(Settings.java:48) 11-11 18:03:57.788: E/AndroidRuntime(18672): at android.preference.Preference.performClick(Preference.java:952) 11-11 18:03:57.788: E/AndroidRuntime(18672): at android.preference.PreferenceScreen.onItemClick(PreferenceScreen.java:215) 11-11 18:03:57.788: E/AndroidRuntime(18672): at android.widget.AdapterView.performItemClick(AdapterView.java:297) 11-11 18:03:57.788: E/AndroidRuntime(18672): at android.widget.AbsListView.performItemClick(AbsListView.java:1100) 11-11 18:03:57.788: E/AndroidRuntime(18672): at android.widget.AbsListView$PerformClick.run(AbsListView.java:2788) 11-11 18:03:57.788: E/AndroidRuntime(18672): at android.widget.AbsListView$1.run(AbsListView.java:3463) 11-11 18:03:57.788: E/AndroidRuntime(18672): at android.os.Handler.handleCallback(Handler.java:730) 11-11 18:03:57.788: E/AndroidRuntime(18672): at android.os.Handler.dispatchMessage(Handler.java:92) 11-11 18:03:57.788: E/AndroidRuntime(18672): at android.os.Looper.loop(Looper.java:137) 11-11 18:03:57.788: E/AndroidRuntime(18672): at android.app.ActivityThread.main(ActivityThread.java:5289) 11-11 18:03:57.788: E/AndroidRuntime(18672): at java.lang.reflect.Method.invokeNative(Native Method) 11-11 18:03:57.788: E/AndroidRuntime(18672): at java.lang.reflect.Method.invoke(Method.java:525) 11-11 18:03:57.788: E/AndroidRuntime(18672): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:739) 11-11 18:03:57.788: E/AndroidRuntime(18672): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:555) 11-11 18:03:57.788: E/AndroidRuntime(18672): at dalvik.system.NativeStart.main(Native Method)

最佳答案

要显示对话框,您必须从 Dialog 或 Fragment 而不是 Activity 扩展 Brightness。

关于java - 单击时显示对话框首选项,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19912063/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com