0

この質問は、私の共有設定の質問と少し似ていますが、Android データベースが関係しているという点だけです。初めてアプリを起動したときの給与をデータベースに保存したいと考えています。2 回目に起動すると、保存した給与が次のアクティビティでテキストビューとして表示されます。

給与のプロンプトをスキップする方法は大まかに知っていますが、データベースについてはわかりません。私の質問は、給与がnullでないことをデータベースから読み取り、次のアクティビティに表示するにはどうすればよいですか? >>のようなif elseステートメントが何らかの形で含まれていることは知っていますが(給与/データベースがnullでない場合、テキストビューとして次のアクティビティへの意図を開始します)、それらをコーディングする方法がわかりません。

(SavingsGuiderMenuActivity には、SavingsGuiderAppActivity へのリンクが含まれており、これは給与 (目標) を要求し、SavingsGuiderInserActivity アクティビティに表示されます。つまり、ユーザーは SavingsGuiderAppActivity に 1 回しかアクセスできず、次に起動すると、SavingsGuiderMenuActivity から SavingsGuiderInsertActivity に直接移動します。 )

以下は私のコード SavingsGuiderMenuActivity です:

public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.menu);

    Bundle bundle = getIntent().getExtras();
    String name= bundle.getString("name");

TextView resultView = (TextView)findViewById(R.id.view_Name);

    resultView.setText("Welcome " + name);

    ListView menuList = (ListView) findViewById(R.id.ListView_Menu);
    String[] items = { getResources().getString(R.string.start),
            getResources().getString(R.string.about),
            getResources().getString(R.string.help) };
    ArrayAdapter<String> adapt = new ArrayAdapter<String>(this, R.layout.menu_item, items);
    menuList.setAdapter(adapt);
    menuList.setOnItemClickListener(new AdapterView.OnItemClickListener() {
        public void onItemClick(AdapterView<?> parent, View itemClicked, int position, long id) {
            // Note: if the list was built "by hand" the id could be used.
            // As-is, though, each item has the same id
            TextView textView = (TextView) itemClicked;
            String strText = textView.getText().toString();
            if (strText.equalsIgnoreCase(getResources().getString(R.string.start))) {
                if(!dataExists())
                {
                    startActivity(new Intent(SavingsGuiderMenuActivity.this, SavingsGuiderAppActivity.class));
                }
                 else
                 {
                    Intent intent = new Intent(SavingsGuiderMenuActivity.this, SavingsGuiderInsertActivity.class);
                    Bundle extras = new Bundle();
                    extras.putDouble("target",double_target);
                    extras.putInt("interval",int_interval);
                    intent.putExtras(extras);
                    startActivity(intent);                 
                 }
               SavingsGuiderMenuActivity.this.finish();
           }                
            else if (strText.equalsIgnoreCase(getResources().getString(R.string.help))) {
                // Launch the Help Activity
                startActivity(new Intent(SavingsGuiderMenuActivity.this, SavingsGuiderHelpActivity.class));
            } 

            else if (strText.equalsIgnoreCase(getResources().getString(R.string.about))) {
                // Launch the Settings Activity
                startActivity(new Intent(SavingsGuiderMenuActivity.this, SavingsGuiderAboutActivity.class));
            } 
        }//onitem click
    });   
            }//bundle

public boolean dataExists()
{

    DBAdapter dbAdaptor = new DBAdapter(getApplicationContext());       
    Cursor cursor = null;

        dbAdaptor.open();       
        cursor = dbAdaptor.getAllSavings();

            if(cursor.moveToFirst())
            {
                double_target = cursor.getDouble(1);
                int_interval = cursor.getInt(2);
                return true;
            }
            else
            {
                return false;
            }

}

以下は私のコード SavingsGuiderAppActivity です:

public class SavingsGuiderAppActivity extends SavingsActivity {
/** Called when the activity is first created. */

String tag = "Savings Guider";
EditText targetEdit, intervalEdit;
Button insertButton = null;


protected void onCreate(Bundle savedInstance) {
    super.onCreate(savedInstance);
    setContentView(R.layout.app);
    targetEdit=(EditText)findViewById(R.id.edit_target);
    intervalEdit=(EditText)findViewById(R.id.edit_interval);
    insertButton = (Button) findViewById(R.id.btn_submit);

    insertButton.setOnClickListener(new OnClickListener(){

        public void onClick(View v)
        {
            DBAdapter dbAdaptor = new DBAdapter(getApplicationContext());
            try{
                dbAdaptor.open();

                String target = targetEdit.getText().toString();                    
                String interval = intervalEdit.getText().toString();

                if(!target.equals("") && !interval.equals("")) {

                    try{

                    double target2 = Double.parseDouble(target);                    
                    int interval2 = Integer.parseInt(interval);
                    dbAdaptor.insertSavings(target2, interval2);
                    }
                    catch (NumberFormatException e) {
                        Context context = getApplicationContext();
                        CharSequence text = "Please enter valid value!";
                        int duration = Toast.LENGTH_SHORT;
                        Toast toast = Toast.makeText(context, text, duration);
                        toast.show();
                    }
                }                   

                else {
                    Context context = getApplicationContext();
                    CharSequence text = "Please do not leave any field blank!";
                    int duration = Toast.LENGTH_SHORT;
                    Toast toast = Toast.makeText(context, text, duration);
                    toast.show();
                }
            }
            catch(Exception e){
                Log.d("Savings Guider: ",e.getMessage());
            }
            finally{
                if(dbAdaptor != null)
                    dbAdaptor.close();
            }
        }
    });
}
}

以下は、SavingsGuiderInsertActivity の私のコードです。SavingsGuiderAppActivity ページからデータベースに挿入したデータの表示に問題があるように感じます。Bundle Extras を使用しないように:

public class SavingsGuiderInsertActivity extends SavingsActivity {
/** Called when the activity is first created. */

String tag = "Savings Guider";
DecimalFormat df = new DecimalFormat("#.##");

protected void onCreate(Bundle savedInstance) {
    super.onCreate(savedInstance);
    setContentView(R.layout.insert);

    Bundle bundle = getIntent().getExtras();
    double target= bundle.getDouble("target");
    int interval= bundle.getInt("interval");

TextView targetView = (TextView)findViewById(R.id.view_target); TextView intervalView = (TextView)findViewById(R.id.view_interval);

    targetView.setText("$" + target);
    intervalView.setText("" + interval);

    double average = target/interval;

    TextView averageView = (TextView)findViewById(R.id.viewAverage);
    averageView.setText("You must save $" + df.format(average) + " everytime!");

}
4

1 に答える 1

0

このようにできます。

  1. 最初の起動時にデータベース テーブルを作成しますが、テーブルは空になります。

  2. テーブルが空かどうかを確認し、何もしません。それ以外の場合は、データベースからデータを取得して表示します。

SQLiteOpenHelperを使用して Android データベースを管理できます。

テーブルが空かどうかを確認するには、次のようなことができます

  public boolean isSalaryTableNotEmpty() {
      String sql = "SELECT COUNT(*) FROM SALARY_TABLE";
      Cursor cursor = database.rawQuery(sql, null);
      if(!cursor.moveToFirst()) {
          return false;
      }
      int count = cursor.getInt(0);
      cursor.close();
      return count > 0;
  }
于 2012-07-28T03:20:23.060 に答える