2013-11-10 4 views
-1

У меня проблема. Я создал класс Brightness для управления яркостью экрана с помощью SeekBar в диалоге. Это класс.AlertDialog падает, когда я нажимаю на Preference

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(this); 
    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(); 

} 
} 

В другом классе, предпочтениях, у меня есть предпочтение, которое говорит «Яркость». Я бы хотел нажать на это, чтобы открыть диалоговое окно «Предпочтения», а затем я поместил этот код.

Preference brigh; 
brigh = (Preference) this.findPreference("brightness_pref"); 

brigh.setOnPreferenceClickListener(new OnPreferenceClickListener() { 
    public boolean onPreferenceClick(Preference preference) { 

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

     return true; 

    } 
}); 

Но когда я запускаю приложение, и я нажимаю на «Предпочтения», сбой. Это LogCat

11-10 18: 23: 34,955: Е/AndroidRuntime (945): неустранимым: Главный 11-10 18: 23: 34,955: Е/AndroidRuntime (945): java.lang .NullPointerException 11-10 18: 23: 34.955: E/AndroidRuntime (945): at android.content.ContextWrapper.getApplicationInfo (ContextWrapper.java:146) 11-10 18: 23: 34.955: E/AndroidRuntime (945)): at android.view.ContextThemeWrapper.getTheme (ContextThemeWrapper.java:103) 11-10 18: 23: 34.955: E/AndroidRuntime (945): at android.app.AlertDialog.resolveDialogTheme (AlertDialog.java:143) 11-10 18: 23: 34.955: E/AndroidRuntime (945): at android.app.AlertDialog $ Builder. (AlertDialog.java:360) 11-10 18: 23: 34.955: E/AndroidRuntime (945): at com.simonedev.androtools.Brightness.ShowDialog (Brightness.java:39)) 11-10 18: 23: 34.955: E/AndroidRuntime (945): at com.simonedev.androtools.Impostazioni $ 1.onPreferenceClick (Settings.java:48) 11-10 18: 23: 34.955: E/AndroidRuntime (945): at android.preference.Preference.performClick (Preference.java:952) 11-10 18: 23: 34.955: E/AndroidRuntime (945): at android.preference.PreferenceScreen.onItemClick (PreferenceScreen.java : 215) 11-10 18: 23: 34.955: E/AndroidRuntime (945): at android.widget.AdapterView.performItemClick (AdapterView.java:297) 11-10 18: 23: 34.955: E/AndroidRuntime (945): at android.widget.AbsListView.performItemClick (AbsListView.java:1100) 11-10 18: 23: 34.955: E/AndroidRuntime (945): at android.widget.AbsListView $ PerformClick.run (AbsListView.java:2788) 11-10 18: 23: 34.955: E/AndroidRuntime (945): at android.widget.AbsListView $ 1.run (AbsListView.java: 3463) 11-10 18: 23: 34.955: E/AndroidRuntime (945): at android.os.Handler.handleCallback (Handler.java:730) 11-10 18: 23: 34.955: E/AndroidRuntime (945)): at android.os.Handler.dispatchMessage (Handler.java:92) 11-10 18: 23: 34.955: E/AndroidRuntime (945): at android.os.Looper.loop (Looper.java:137) 11-10 18: 23: 34,955: E/AndroidRuntime (945): at android.app.ActivityThread.main (ActivityThread.java:5289) 11-10 18: 23: 34.955: E/AndroidRuntime (945): at java.lang.reflect.Method .invokeNative (родной метод) 11-10 18: 23: 34.955: E/AndroidRuntime (945): at java.lang.reflect.Method.invoke (Method.java:525) 11-10 18: 23: 34.955: Е/AndroidRuntime (945): в com.android.internal.os.ZygoteInit $ MethodAndArgsCaller.run (ZygoteInit.java:739) 11-10 18: 23: 34,955: Е/AndroidRuntime (945): в ком .android.internal.os.ZygoteInit.main (ZygoteInit.java:555) 11-10 18: 23: 34.955: E/AndroidRuntime (945): at dalvik.system.NativeStart.основной (родной метод)

Не могу понять, как решить. Можете ли вы любезно помочь мне?

ответ

0

EDIT потому что вы не начинаете деятельность с намерением. если вы хотите показать только AlertDialog, вы можете использовать In в PreferenceActivity.

final AlertDialog.Builder popDialog = new AlertDialog.Builder(getApplicationContext()); 
+0

Это не работает. Сбой. Есть идеи? – user2976665

+0

где вы создали экземпляр класса 'Яркость'? Я имею в виду, что вы вызываете метод активности «Яркость» от другого, который использует «AlertDialog». –

+0

Класс, из которого вызывается ShowDialog, является функцией PreferenceActivity, которая не содержит AlertDialog, но цель состоит в том, чтобы вызвать диалог из метода ShowDialog (класс Яркость) – user2976665

Смежные вопросы