2017-09-10 15 views
-1

私は最初のアクティビティから2番目のアクティビティに渡す変数を追加しました。 新しいアクティビティで、最初のアクティビティから受け入れた情報を使用し、それを新しいdouble変数に保存し、textViewにパーマネントとして表示します。 新しいアクティビティを開始する通常のボタンをクリックしているときに表示されます。新しいアクティビティで変数を使用する方法は?

最初のステップとして、「startActivity(intent1);」を削除する必要があります。 ここからどのように移行すればよいですか?

Javaコード: 最初のアクティビティ(名前:settings.java)

@Override 
protected void onCreate(Bundle savedInstanceState) { 

    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_settings); 
} 
    public void onClick (View v){ 
    Intent intent = new Intent(settings.this, WaitressRecord.class); 
    startActivity(intent); 


} 


protected void onClickWait (View v) { 

    //--- Casting & Converting EditText "etSalaryWaitress" to Double "doubleSW". 
    btnWaitress =(Button)findViewById(R.id.btnWaitress); 
    etSalaryWaitress = (EditText) findViewById(R.id.etSalaryWaitress); 
    doubleSW = Double.parseDouble(etSalaryWaitress.getText().toString()); 
    //---Casting Radio Button(s). 
    rbPercentage = (RadioButton)findViewById(R.id.rbPercentage); 
    rbShekel = (RadioButton)findViewById(R.id.rbShekel); 


    if (doubleSW < 100) { 
     if (rbPercentage.isChecked()) { 
      HafrashaP = 1 - (doubleSW/100.0); 
      strHafPer = String.valueOf(HafrashaP); 
      Toast.makeText(settings.this, strHafPer, Toast.LENGTH_SHORT).show(); 
      // start the SecondActivity 
      Intent intent1 = new Intent(this, WaitressRecord.class); 
      intent1.putExtra(Intent.EXTRA_TEXT, strHafPer); 
      startActivity(intent1); 
     } else if (rbShekel.isChecked()) { 
      HafrashaS = -doubleSW; 
      strHafShek = String.valueOf(HafrashaS); 
      Toast.makeText(settings.this, strHafShek, Toast.LENGTH_SHORT).show(); 
     } else { 
      Toast.makeText(settings.this, "לא הוזנה סוג ההפרשה", Toast.LENGTH_SHORT).show(); 
     } 
    } else { 
     Toast.makeText(settings.this, "מספר שגוי", Toast.LENGTH_SHORT).show(); 
    } 
} 

新しい活動:(名前:WaitressRecord.java)

public class WaitressRecord extends AppCompatActivity { 

    String strHafPer; 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_waitress_record); 

     // get the text from MainActivity 
     Intent intent1 = getIntent(); 
     strHafPer = intent1.getStringExtra(Intent.EXTRA_TEXT); 

     // use the text in a TextView 
     TextView textView = (TextView) findViewById(R.id.textView); 
     textView.setText(strHafPer); 
    } 
} 
+0

「は上の永続的なとして表示textView "SQLiteデータベースのように、その情報をどこかに残しておきたいですか?あなたのonClickWait()は使用されていないようです –

+0

私はSQLiteを使用していません。私は変数のカップルのためにそれを使用する必要はないと思う。または私は間違っていますか? @AndrewChiLam –

+0

これで達成しようとしていることを説明してください。\t "textViewで永久に表示する"アクティビティが再作成されたときにテキスト表示に値を表示するには、どこかに永続させ、saveInstanceState(画面回転)、SQLiteデータベースのsharedPreferencesにする必要があります。 –

答えて

0
//First Activity 
Intent intent= new Intent(this, SecondActivity.class); 
Bundle extra = new Bundle(); 
mBundle.putString(VARIABLE_KEY, value); 
intent.putExtras(mBundle); 
    startActivity(intent); 

//on the second Acitivty 

intent intent = getIntent(); 
Bundle bundleExtra; 
//Null Checking 
if (intent != null) { 
bundleExtra = getIntent().getExtras(); 
// Be sure your check your "VARIABLE KEY SAME AS in THE FIRST ACTIVITY 
String resultString = extras.getString("VARIABLE_KEY"); 
} 
+0

私はそれを追加するべきですか? onCreateで? と "Intent intent = new Intent(this、SecondActivity.class);" [行2] は、インテントの意図=新しいインテント(FirstActivity.this、SecondActivity.class)である必要があります。 –

+0

アクティビティを変更するには、startActivity(インテント)を呼び出します。 データを取得するには、必要な場所に呼び出します。 onCreate()にすることができます。 –

関連する問題