この質問は、私の共有設定の質問と少し似ていますが、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!");
}