2017-01-09 16 views
1

我試圖使用意圖在我的主要活動上設置一個edittext,這相當於我的第二個活動上的textview。第二項活動有一個按鈕,當按下該按鈕時,將啓動一個從10秒開始倒計時的計時器,並且每次按下該按鈕時計數一次。 10秒後,我想要取得textview的值(按下按鈕的次數設置),將主活動的edittext設置爲等於它,然後返回到主活動。一旦計時器用完,如何使用意圖將字符串傳遞給主要活動?

這個想法是,您可以手動輸入主要活動的計數,或使用內置計時器來幫助您計數。

我的應用程序在打開時崩潰,我嘗試了多種方法來做到這一點無濟於事。我認爲這個問題可能源於onCreate對主要活動「尋找」意圖,但它不在那裏,因爲它在按下第二個活動的按鈕時正在運行。

主要活動

protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_main); 
    Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar); 
    setSupportActionBar(toolbar); 

    qtyInput = (EditText) findViewById(R.id.qtyInput); 
    valueInput = (EditText) findViewById(R.id.valueInput); 
    resultText = (TextView) findViewById(R.id.resultText); 

    Intent intent = getIntent(); 
    String clickCount = intent.getExtras().getString("clickCount"); 
    qtyInput.setText(clickCount); 

    Button calcButton = (Button) findViewById(R.id.calcButton); 
    calcButton.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View view) { 
      float qty = Float.parseFloat(qtyInput.getText().toString()); 
      float value = Float.parseFloat(valueInput.getText().toString()); 
      float total = qty * value * 60; 
      String stringTotal = String.format("%.0f", total); 
      resultText.setText(stringTotal); 
     } 
    }); 

    Button countButton = (Button) findViewById(R.id.countButton); 
    countButton.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View v) { 
      startActivity(new Intent(MainActivity.this, CountActivity.class)); 
     } 
    }); 
} 

次活動

final TextView countdownTimer = (TextView) findViewById(R.id.countdownTimer); 

    final CountDownTimer timer = new CountDownTimer(10000,1000) { 
     public void onTick(long millisUntilFinished) { 
      int seconds = (int) ((millisUntilFinished/1000)); 
      countdownTimer.setText("Time left: " + millisUntilFinished/1000); 
     } 
     public void onFinish() { 
      String clickCount = countDisplay.getText().toString(); 
      final Intent passCount = new Intent(CountActivity.this, MainActivity.class); 
      passCount.putExtra("clickCount", clickCount); 
      startActivity(passCount); 
     } 
    }; 

    final TextView countDisplay = (TextView) findViewById(R.id.countDisplay); 
     int count; 

    Button countOneButton = (Button) findViewById(R.id.countOneButton); 
    countOneButton.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View view){ 
      if (clickcount==0) { 
       timer.start(); 
       clickcount++; 
       countDisplay.setText("Count: " + clickcount); 
      } 
      else { 
       clickcount++; 
       countDisplay.setText("Count: " + clickcount); 
      } 

     } 
    }); 

} 

回答

1

我想借此TextView中的值(由 按鈕多少次按下SET鍵)在主要活動上設置edittext等於 它,並返回到主要活動。開始CountActivity活動後

隨着當前的代碼調用MainActivity.this.finish()

兩種方式從CountActivity找回數據的MainActivity。在MainActivity使用startActivityForResult代替startActivity和覆蓋onActivityResult

startActivity(new Intent(MainActivity.this, CountActivity.class)); 
    MainActivity.this.finish(); 

2.開始CountActivity活動獲得的數據來自CountActivity回來。發送數據呼叫setResult方法完成之前CountActivity活動。

Intent passCount = new Intent(); 
passCount.putExtra("clickCount", clickCount); 
CountActivity.this.setResult(Activity.RESULT_OK,passCount); 
CountActivity.this.finish(); 
+0

好吧,這是有道理的。我研究瞭如何使用startActivityForResult,並且這似乎是使我爲此工作的最佳方式。我一直在搞這個,我覺得我很接近,但是當計時器用完時它已經崩潰了,它應該回到主要活動。我將returnIntent的代碼放入倒數計時器內的onFinish代碼塊中。這是正確的安置嗎? – gah4716

+0

另外,你如何重寫onActivityResult? – gah4716

+0

@ gah4716:是的,從'onFinish'調用setResult –

相關問題