0

我正在开发一个应用程序,它将消息作为输入并将其发送到存储在数据库中的预定义数字!知道问题是我在oncreate()方法中加载应用程序时在数据库中插入数字,每次我首先发送消息时,如果它发送消息到 4 号,第二次尝试它会将短信发送到 8 号并且累了移动我的数据插入代码,这样它就不会在每次加载时只插入一次数据,但它不起作用,请任何人帮忙,谢谢!

 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都会被插入数据库四次。这意味着当用户再次单击该按钮时,又5556添加了四行。

我认为您正在尝试制作,当用户单击按钮时,只需将短信发送到数据库中的预定义数字,即 4 个数字?

如果是这样:

将静态变量添加到您的活动

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 回答