2010-11-29 23 views
3

我想通过我的意图传递数据到下一个活动,所以我可以接收它并给定时器值。通过意图传递数据并接收它

Button TimerButton = (Button)findViewById(R.id.TimerActivityButton); 
TimerButton.setOnClickListener(new View.OnClickListener(){ 
    public void onClick(View v) 
    { 
      Intent timer = new Intent (BeefActivity.this,TimerActivity.class); 
      timer.putExtra("beefType", 5000); 
      timer.putExtra("beefThickness", 5000); 
      timer.putExtra("grillTime", 15000); 
      startActivity(timer); 
     } 
}); 

我已经尝试了接收值的不同方法,并且我不断收到强制关闭或编译器错误。我知道这很简单,所以有人请告诉我如何做到这一点。先谢谢你!


This is force closing 
  • 我试图传递INT长度= beefType和它力关闭
  • 我试图改变-1至200,但它仍然强制关闭
  • 我放回INT长度= 20000它在哪里工作原来

只有int beefType = getIntent().getIntExtra("beefType", -1);在我的班的顶部使它逼近。没有编译器错误。我坚持:-(这里是我的代码看起来


package com.android.project1; 

import android.app.Activity; 
import android.os.Bundle; 
import android.os.CountDownTimer; 
import android.view.View; 
import android.widget.Button; 
import android.widget.TextView; 

public class TimerActivity extends Activity { 

    int beefType = getIntent().getIntExtra("beefType", 200); 

    TextView timeDisplay; 
    MyCount counter; 
    int state = 0; 
    int length = 20000; 
    long startTime = 0; 
    long currentTime = 0; 
    long timeElapsed = 0; 
    long timeRemaining = 0; 
    long prevTimeRemaining = 0; 
    Button control; 

    public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 

    setContentView(R.layout.timer); 

    timeDisplay = (TextView) findViewById(R.id.timer); 
    control = (Button) findViewById(R.id.control); 
    counter = new MyCount(length, 100); 
    } 
    public String formatTime(long millis) 
    { 
     String output = "00:00:00"; 
     long seconds = millis/1000; 
     long minutes = seconds/60; 
     long hours = minutes/60; 

     seconds = seconds % 60; 
     minutes = minutes % 60; 
     hours = hours % 60; 

     String secondsD = String.valueOf(seconds); 
     String minutesD = String.valueOf(minutes); 
     String hoursD = String.valueOf(hours); 

     if (seconds < 10) 
     secondsD = "0" + seconds; 
     if (minutes < 10) 
     minutesD = "0" + minutes; 
     if (hours < 10) 
     hoursD = "0" + hours; 

     output = hoursD + " : " + minutesD + " : " + secondsD; 
     return output; 
    } 
    public void control(View view) { 
    switch (state) { 
    case 0: 
     startTime = System.currentTimeMillis(); 
     counter.start(); 
     control.setText(R.string.pause); 
     state = 1; 
     break; 
    case 1: 
     // Pause 
     currentTime = System.currentTimeMillis(); 
     timeElapsed = currentTime - startTime; 
     if (prevTimeRemaining == 0) 
     timeRemaining = length - timeElapsed; 
     else 
     timeRemaining = prevTimeRemaining - timeElapsed; 
     counter.cancel(); 
     timeDisplay.setText("Left: " + String.valueOf(formatTime(timeRemaining))); 
     control.setText(R.string.resume); 
     prevTimeRemaining = timeRemaining; 

     // Resume 
     counter = new MyCount(timeRemaining, 100); 
     state = 0; 
     break; 
    case 2: 
     prevTimeRemaining = 0; 
     counter = new MyCount(length, 100); 
     control.setText(R.string.start); 
     timeDisplay.setText(R.string.timer); 
     state = 0; 
    } 
    } 

    public class MyCount extends CountDownTimer 
    { 

    public MyCount(long millisInFuture, long countDownInterval) 
    { 
     super(millisInFuture, countDownInterval); 
    } 
    public void onTick(long timeRemaining) 
    { 
     timeDisplay.setText("Left: " + formatTime(timeRemaining)); 
    } 
    public void onFinish() 
    { 
     timeDisplay.setText("Finished!"); 
     state = 2; 
     control.setText(R.string.restart); 
    } 
    } 
} 
+1

发布您尝试过的代码。 – 2010-11-29 21:23:05

+0

也,在错误的时刻尝试获得logcat输出 – bbaja42 2010-11-29 22:07:15

回答

6
int beefType = getIntent().getIntExtra("beefType", -1); 
1

你需要把这个行:

int beefType = getIntent().getIntExtra("beefType", 200); 

在onCreate方法,而不是作为一个字段初始值。

下一次 - 在提问之前请先阅读堆栈跟踪,如果您在阅读之后仍然卡住,请将其附加到您的问题上

祝你好运!