1

我的新 android 项目出现问题。我不能在意图开始时使用共享首选项。当我运行我的项目时,它会强制关闭并在 log-cat 中显示空指针异常。任何人都可以提出任何解决这个问题的建议吗?这是我的课

public class NextActivity extends Activity {

    String a,b;
    Context cntxt;

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.nextlayout);

        TextView et3 = (TextView)findViewById(R.id.textView3);


        SharedPreferences prefs = cntxt.getSharedPreferences("myprefs", 0);
        a =  prefs.getString("KEY_FIRST","");

            et3.setText(a);

            Button btn = (Button)findViewById(R.id.button1);

            btn.setOnClickListener(new View.OnClickListener()
            {

                public void onClick(View v) {

                Intent t = new Intent(cntxt,Kl_Activity.class);
                startActivity(t);
                }
            // and get whatever type user account id is

        });
}
}
4

5 回答 5

3

这条线是问题

SharedPreferences prefs = cntxt.getSharedPreferences("myprefs", 0);

你在哪里初始化cntxt

像这样使用

 SharedPreferences prefs = getSharedPreferences("myprefs", 0);
于 2012-10-29T06:46:10.013 回答
2

你从来没有设置cntxt任何东西。不过不用担心,因为你不需要它。Activity是一个Context。你可以getSharedPreferences(...)在课堂上打电话。

于 2012-10-29T06:46:52.383 回答
2

你的错误在这一行

SharedPreferences prefs = cntxt.getSharedPreferences("myprefs", 0);

因为你没有初始化cntxt ..

所以只需更换

cntxt =this;
SharedPreferences prefs = cntxt.getSharedPreferences("myprefs", 0);

或从行中删除 cntxt。

SharedPreferences prefs = getSharedPreferences("myprefs", 0);
于 2012-10-29T06:46:52.760 回答
2

我在您的代码中发现了问题。您使用 cntxt 而不对其进行初始化。所以在访问它之前初始化它。

setContentView(R.layout.nextlayout);
cntxt = this;

或者

不要使用 cntxt 。

SharedPreferences prefs = getSharedPreferences("myprefs", 0);
于 2012-10-29T06:47:10.607 回答
2

试试这个代码:

public class NextActivity extends Activity {

    String a,b;

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.nextlayout);

        TextView et3 = (TextView)findViewById(R.id.textView3);


        SharedPreferences prefs = getSharedPreferences("myprefs", 0);
        a =  prefs.getString("KEY_FIRST","");

            et3.setText(a);

            Button btn = (Button)findViewById(R.id.button1);

            btn.setOnClickListener(new View.OnClickListener()
            {

                public void onClick(View v) {

                Intent t = new Intent(this,Kl_Activity.class);
                startActivity(t);
                }
            // and get whatever type user account id is

        });
}
}
于 2012-10-29T06:49:00.043 回答