首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >ShowDialog onClick偏好

ShowDialog onClick偏好
EN

Stack Overflow用户
提问于 2013-11-11 17:15:23
回答 2查看 374关注 0票数 1

我有一个PreferenceActivity,其中有一个偏好。我想点击这个首选项将打开另一个类中的对话框。类亮度包含要呈现的对话框。这是密码。

代码语言:javascript
运行
复制
// 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;

            }
            });

光明课

代码语言:javascript
运行
复制
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):致命例外:主要11-11 18:03:57.788: E/AndroidRuntime(18672):java.lang.NullPointerException 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.Brightness.ShowDialog(Brightness.java:39) 11-11 : 18:03:57.788: E/AndroidRuntime(18672):com.packagename.Settings$1.onPreferenceClick(Settings.java:48) 11-11 18:57.788: E/AndroidRuntime(18672):android.preference.Preference.performClick(Preference.java:952) 11-11 18:03:57.788: E/AndroidRuntime(18672):android.preference.PreferenceScreen.onItemClick(PreferenceScreen.java:215) 11-11 18:03:57。788: E/AndroidRuntime(18672):在android.widget.AdapterView.performItemClick(AdapterView.java:297) 11-11 18:03:57.788: E/AndroidRuntime(18672):在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):atandroid.widget.AbsListView$1.run(AbsListView.java:3463) 11-11 18:03:57.788: E/AndroidRuntime(18672):android.os.Handler.handleCallback(Handler.java:730) 11-11 18:57.788: E/AndroidRuntime(18672):在android.os.Handler.dispatchMessage(Handler.java:92) 11-11 18:03:57.788: E/AndroidRuntime(18672):at android.os.Looper.loop11-11 18:03:57.788: E/AndroidRuntime(18672):android.app.ActivityThread.main(ActivityThread.java:5289) 11-11 18:03:57.788: E/AndroidRuntime(18672):at java.lang.reflect.Method.invokeNative(原生方法) 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):在com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:739) 11-11 18:57.788: E/AndroidRuntime(18672):在com.android.internal.os.ZygoteInit.main(ZygoteInit.java:555) 11-11 18:03:57.788: E/AndroidRuntime(18672):at dalvik.system.NativeStart.main(原生方法)

EN

回答 2

Stack Overflow用户

发布于 2013-11-11 17:23:22

要显示对话框,必须从对话框或片段中扩展亮度,而不是活动。

票数 0
EN

Stack Overflow用户

发布于 2013-11-11 18:01:38

在这里,活动代码:

代码语言:javascript
运行
复制
public class MainActivity extends FragmentActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        MyDialog dialog = new MyDialog();
        Bundle arguments = new Bundle();
        arguments.putString(MyDialog.ARGS, "Message");
        dialog.setArguments(arguments);
        FragmentTransaction ft = getSupportFragmentManager().beginTransaction();
        ft.add(dialog, dialog.getTag());
        ft.commitAllowingStateLoss();                       
    }
}

对话:

代码语言:javascript
运行
复制
public class MyDialog extends DialogFragment {
    public static final String ARGS = "ARGS";

    @Override
    public Dialog onCreateDialog(Bundle savedInstanceState) {
        AlertDialog.Builder builder = new AlertDialog.Builder(getActivity());
        Bundle args = getArguments();
        String message;
        if (args.containsKey(ARGS)) message = args.getString(ARGS); else message = "Sorry";
           builder.setTitle("Title")
           .setMessage(message)
           .setNeutralButton("OK", null);
            return builder.create();
    }
}

如何在PrefernceActivity中使用它,您应该考虑一下。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/19912063

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档