我自定义了一个登陆的dialog的类,这个对话框在很多Activity里面都要调用。请问,如何在登陆成功之后在这个自定义的dialog中使用SharedPreferences来保存用户的信息?

解决方案 »

  1.   


    在自定义的dialog在无法使用SharedPreferences,因为它是继承dialog类,没有实现Context中的getSharedPreferences方法。。
      

  2.   


    因为你用了匿名内部类的方式使用,所以找不到Context。你
    一是不用匿名内部类的方式写这个dialog;
    一是将外部的Context保存在一个变量中,然后在匿名内部类中使用那个变量,
    一是将getSharedPreferences写成一个方法,在你的匿名内部类中使用这个方法。
      

  3.   

    public class loginDialog extends Dialog {
        private Button button = null;
        
        public void onCreate() {
             super.onCreate(savedInstanceState);
             setContentView(R.layout.login_dialog);
     setTitle("用户登陆");         button = (Button) findViewById(R.id.login);
             confirm.setOnClickListener(new View.OnClickListener() { @Override
    public void onClick(View arg0) {
    // 我需要在这里登陆成功之后使用SharedPreferences保存信息
    }
    });
        }
    }代码大概就是这样,太多了贴了你们也不方便看。如果不把dialog单独写成一个类,而在activity里面实现的话,是可以用SharedPreferences的。但是这个登陆框我在很多地方都要用,所以我想把它单独拿出来,然后在activity里面需要用的时候实例化一个对象。但是这样的话就不能用SharedPreferencds了。。我试过调用dialog的getOwenerAcitivy().getSharedPreferences() ,但是好像也不行。。我这个问题该如何解决呢????
      

  4.   

    你把这个dialog写进一个activity的类,
    然后想用这个dialog的类extend这个有dialog的类就可以了
      

  5.   


    这样不太好吧我决定写一个类似dialog的activity了
      

  6.   

    可以实现Application,因为Application是实现了Context的,这样可以拿到Application就是Context了
      

  7.   

    Application  这个应该好使