无法解决

时间:2012-06-08 23:20:26

标签: java android

我是人,我有一个很大的问题:我正在用Db创建我的第一个Android应用程序,这是我用java和OOP的第二周。

这是主要活动的来源:

public class EpsoftSMSActivity extends Activity {
    /** Called when the activity is first created. */



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

        final MyDatabase db=new MyDatabase(getApplicationContext());



        db.open();  //apriamo il db



        if (db.listaParametri().getCount()==0)
        {

            setup_parametri();

             /*final Dialog dialog = new Dialog(this);
             dialog.setContentView(R.layout.login);
             dialog.setTitle("Login");
             dialog.setCancelable(true);
             //there are a lot of settings, for dialog, check them all out!




             //set up button
             Button registra = (Button) dialog.findViewById(R.id.registra);
             registra.setOnClickListener(new OnClickListener() {
                 @Override
                     public void onClick(View v) {

                         String username = dialog.findViewById(R.id.username).toString();
                         String password = dialog.findViewById(R.id.password).toString();

                         db.inserimentoParametri(username, password);
                         dialog.dismiss();
                     }
             });

             Button annulla = (Button) dialog.findViewById(R.id.annulla);

             annulla.setOnClickListener(new OnClickListener() {
                 @Override
                     public void onClick(View v) {
                        dialog.dismiss();

                     }
             });

             //now that the dialog is set up, it's time to show it    
             dialog.show();*/

        }




    }

    @Override
    public boolean onCreateOptionsMenu(Menu menu)
    {
        getMenuInflater().inflate(R.layout.menu, menu);
        return true;
    }


    public boolean onOptionsItemSelected(MenuItem item)
    {
        switch (item.getItemId())
        {
            case R.id.chiudi:

                finish();
                System.exit(0);
                return true;

            case R.id.setup:

                setup_parametri();



                return true;

            case R.id.info:

                  final Dialog dialog = new Dialog(this);
                    dialog.setContentView(R.layout.dialog);
                    dialog.setTitle("Informazioni & Credits");
                    dialog.setCancelable(true);
                    //there are a lot of settings, for dialog, check them all out!

                  /*  //set up text
                    TextView text = (TextView) dialog.findViewById(R.id.TextView01);
                    //text.setText(R.string.lots_of_text);

                    //set up image view
                    ImageView img = (ImageView) dialog.findViewById(R.id.ImageView01);
                    img.setImageResource(R.drawable.ic_launcher);*/

                    //set up button
                    //set up button
                    Button button = (Button) dialog.findViewById(R.id.Button01);
                    button.setOnClickListener(new OnClickListener() {
                    @Override
                        public void onClick(View v) {
                            dialog.dismiss();

                        }
                    });
                    //now that the dialog is set up, it's time to show it    
                    dialog.show();


            return true;

        }
        return super.onOptionsItemSelected(item);
    }

    public void setup_parametri()
    {



         final Dialog dialog = new Dialog(this);
         dialog.setContentView(R.layout.login);
         dialog.setTitle("Login");
         dialog.setCancelable(true);
         //there are a lot of settings, for dialog, check them all out!




         //set up button
         Button registra = (Button) dialog.findViewById(R.id.registra);
         registra.setOnClickListener(new OnClickListener() {
             @Override
                 public void onClick(View v) {

                     String username = dialog.findViewById(R.id.username).toString();
                     String password = dialog.findViewById(R.id.password).toString();

                      db.inserimentoParametri(username, password);
                     dialog.dismiss();
                 }
         });

         Button annulla = (Button) dialog.findViewById(R.id.annulla);

         annulla.setOnClickListener(new OnClickListener() {
             @Override
                 public void onClick(View v) {
                    dialog.dismiss();

                 }
         });

         //now that the dialog is set up, it's time to show it    
         dialog.show();


    }


}

在最新的函数中,名为“setup_parametri”,我尝试调用“db.inserimentoParametri”,但Eclipse告诉我“db无法解析”。 Db在oncreate中定义。

的WhatsUp? TNX。

3 个答案:

答案 0 :(得分:2)

db是在onCreate()内声明的局部变量。任何其他方法都看不到它。您可能希望将其设置为Activity类的实例字段,这意味着它将可用于该类的所有方法。

onCreate()之外声明字段,但在里面初始化它。像这样:

private MyDatabase db;

@Override
public void onCreate(Bundle savedInstanceState) {

    ....

    db = new MyDatabase(getApplicationContext());

答案 1 :(得分:1)

您已将db声明为onCreate()中的变量而未将其传递给setup_parametri()

你需要把它变成一个类变量:

public class EpsoftSMSActivity extends Activity {
    /** Called when the activity is first created. */


    final MyDatabase db;

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

        db = new MyDatabase(getApplicationContext());



        db.open();  //apriamo il db

或将setup_parametri()的签名更改为setup_parametri(MyDatabase db)

答案 2 :(得分:0)

运行OnClickerListener事件处理程序时,DB变量不在范围内。

将db定义移动到onCreate方法范围之外,即使其成为成员变量。