0

2 つのボタンと EditText フィールドを使用してユーザー入力を取得し、データベース内の対応するレコードを表示する sqlite のデータベースを使用しています。ボタンの 1 つにエラーがあり、何が原因なのかわからず、さまざまなコード行を実装してクリーニングしようとしましたが、誰かが問題の原因について少し光を当ててくれることを望んでいます. 私が得ているエラーは、ボタンを変数に入れることができないということです. 問題が発生している場所に (*) 記号を付けました. 助けていただければ幸いです.

package com.example.database;

import android.app.Activity;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.EditText;
import android.widget.Toast;



public class DBUse extends Activity  {
    EditText dEdit;
    SQLiteDatabase data;
    public static final String KEY_ROWID = "_id";
    public static final String KEY_BUSINESS = "business";
    public static final String KEY_ADDRESS = "address";
    public static final String KEY_PHONE = "phone";
    public static final String KEY_HOURS = "hours";
    public static final String KEY_WEB = "website";
    public static final String KEY_TYPE = "type";




    @Override
    public void onCreate(Bundle savedInstanceState) {

        // TODO Auto-generated method stub


        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        MainActivity datab = new MainActivity(this);

        Button buttonName =(Button)findViewById(R.id.buttonName);
        buttonName.setOnClickListener(startName);

        **Button buttonType =(Button)findViewById(R.id.buttonType);
        buttonType.setOnClickListener(startType);**

        dEdit =(EditText)findViewById(R.id.textView1);

        datab.open();


        Cursor c = datab.getAllTitles();
        if(c.moveToFirst())
        {
            do{DisplayTitle(c);
        }while (c.moveToNext());
    }   
        datab.open();
        Cursor b = datab.getAllTitles();

        if (b.moveToFirst())
            DisplayTitle(b);
        else
            Toast.makeText(this,"No business found",Toast.LENGTH_LONG).show();
        data.close();

    data.close();


    }



//displays the data

    public void DisplayTitle(Cursor c)  {
        Toast.makeText(this,
        "Name: " + c.getString(1)+"\n"+
        "Address:" + c.getString(2)+"\n"+
        "Phone:" + c.getString(3)+"\n"+
        "Hours:" + c.getString(4)+"\n"+
        "Website"+ c.getShort(5)+
        "Type" + c.getShort(6),
        Toast.LENGTH_LONG).show();


    }

    //Informs the user what is being searched
    private OnClickListener startName=new OnClickListener(){

        public void onClick (View v) {

            Cursor cur=data.rawQuery("SELECT business,address,phone,hours,website,type FROM Business where name like %"+dEdit.getText().toString()+"%", null);
            String result="";

            int iRow=cur.getColumnIndex(KEY_ROWID);
            int iName=cur.getColumnIndex(KEY_BUSINESS);
            int iAddress=cur.getColumnIndex(KEY_ADDRESS);
            int iPhone=cur.getColumnIndex(KEY_PHONE);
            int iHours=cur.getColumnIndex(KEY_HOURS);
            int iWebsite=cur.getColumnIndex(KEY_WEB);
            int iType=cur.getColumnIndex(KEY_TYPE);
            Toast.makeText(DBUse.this, "Searching by Name", Toast.LENGTH_LONG).show();
        //  log.d("result",DBUse.getString(0));
            for(cur.moveToFirst(); !cur.isAfterLast(); cur.moveToNext()){
                result=result +cur.getString(iRow) + " "
                        +cur.getString(iName) + " "
                        +cur.getString(iAddress) + " "
                        +cur.getString(iPhone) + " "
                        +cur.getString(iHours) + " "
                        +cur.getString(iWebsite) + " "
                    +cur.getString(iType) + " " + "\n";

            }
            return;
        };




        //Informs the user what is being searched
        **private OnClickListener startType=new OnClickListener(){

            public void onClick (View v){
            Cursor cur=data.rawQuery("SELECT business,address,phone,hours,website,type FROM Business where type like %"+dEdit.getText().toString()+"%", null);**
            String result="";
            int iRow=cur.getColumnIndex(KEY_ROWID);
            int iName=cur.getColumnIndex(KEY_BUSINESS);
            int iAddress=cur.getColumnIndex(KEY_ADDRESS);
            int iPhone=cur.getColumnIndex(KEY_PHONE);
            int iHours=cur.getColumnIndex(KEY_HOURS);
            int iWebsite=cur.getColumnIndex(KEY_WEB);
            int iType=cur.getColumnIndex(KEY_TYPE);
            Toast.makeText(DBUse.this, "Searching by Name", Toast.LENGTH_LONG).show();
        //  log.d("result",DBUse.getString(0));
            for(cur.moveToFirst(); !cur.isAfterLast(); cur.moveToNext()){
                result=result +cur.getString(iRow) + " "
                        +cur.getString(iName) + " "
                        +cur.getString(iAddress) + " "
                        +cur.getString(iPhone) + " "
                        +cur.getString(iHours) + " "
                        +cur.getString(iWebsite) + " "
                        +cur.getString(iType) + " " + "\n";


            }
            return;
        }


        };
    };
}

問題のエラー メッセージ:

Description Resource    Path    Location    Type
startType cannot be resolved to a variable  DBUse.java  /database/src/com/example/database  line 43 Java Problem
4

1 に答える 1

0

あなたの場合、あなたはあなたのOnClickListener startType中で宣言していますOnClickListener startName。私はそれが2つの異なる方法であるべきだと思います。

于 2013-04-27T07:43:47.850 に答える