0

メッセージを入力として受け取り、データベースに保存されている事前定義された番号に送信するアプリを開発しています! 問題は、アプリがoncreate()メソッドに読み込まれるときに、最初にメッセージを送信するたびにデータベースに数字を挿入していることです私のデータ挿入コードは、すべてのロードではなく1回だけデータを挿入するようにしますが、機能しません。

 btnSendSMS.setOnClickListener(new View.OnClickListener() 
    {
        public void onClick(View v) 
        {  
            //loop++;

                 db.open();
                 //loop++;
                  long id;


                  id = db.insertTitle(
                            "5556");  
                    id = db.insertTitle(
                            "5556");  

                    id = db.insertTitle(
                            "5556");  

                    id = db.insertTitle(
                            "5556");  

                 db.close();


             message = txtMessage.getText().toString();                 
            if ( message.length()>0 && message.length()<200)                
            {
                 db.open(); 
                 Cursor c = db.getAllTitles();
                 if (c.moveToFirst())
                 { 


                     String phoneNo; 

                     do { phoneNo=c.getString(1) ;  
                        sendSMS(phoneNo,message);    
                      count++;
                        // db.DisplayTitle(c);
                        Toast.makeText(DatabaseSmsActivity.this,"sms no : "+count,Toast.LENGTH_LONG).show(); 

                     } while (c.moveToNext());
                 }
                 db.close();
                // Toast.makeText(DatabaseSmsActivity.this,"Total SMS sent : "+count,Toast.LENGTH_LONG).show(); 

            }       


            else
                {Toast.makeText(getBaseContext(), 
                    "Please enter message.", 
                    Toast.LENGTH_SHORT).show();}

        }
    });        

}

4

2 に答える 2

0

このコードでは、ユーザーがボタンをクリックするたびに、数値5556がデータベースに 4 回挿入されます。つまり、ユーザーがボタンをもう一度クリックすると、さらに 4 つの5556行が追加されます。

ユーザーがボタンをクリックして、データベース内の定義済みの番号に 4 つの番号である SMS を送信するときに、作成しようとしていると思いますか?

もしそうなら:

アクティビティに静的変数を追加する

public static final String PREFS = "prefs";
private SharedPreferences preferences;

アクティビティの onCreate メソッドで、次のような関数を呼び出しますenterNumbersToDatabase()

public void onCreate(Bundle savedInstanceState) {  

    super.onCreate(savedInstanceState);  
    setContentView(R.layout.main);  

    preferences = getSharedPreferences(PREFS, MODE_PRIVATE);
    enterNumbersToDatabase();
}  

enterNumbersToDatabase 関数:

private void enterNumbersToDatabase(){
if(!preferences.getBoolean("isNumbersAddedToDB", false)){

db.open();
long id;

id = db.insertTitle("5556");  
id = db.insertTitle("5556");  
id = db.insertTitle("5556");  
id = db.insertTitle("5556");  
    db.close();
SharedPreferences.Editor preferencesEditor  = preferences.edit();
    preferencesEditor.putBoolean("isNumbersAddedToDB", true)
preferencesEditor.commit();
} 
}

ボタンの onClick 関数では、 をスキップしてadding numbers to database part問題ありません。

お役に立てれば

于 2012-05-08T09:49:02.340 に答える
0

onCreate() 呼び出しのたびに数値を挿入しないでください。一度だけ挿入し、その時点からその数値を前の数値で更新します。これで問題が解決すると思います

于 2012-05-08T09:11:58.903 に答える