繁体   English   中英

带有额外意图的计时器

[英]Timer with intent extras

因此,在activity A我想使用SeekBar ,它可以在下面的TextView上设置时间。

这是通过以下代码完成的:

  textViewDisplaySekundiVisokogIntenziteta = (TextView) findViewById(R.id.textViewDisplaySekundiVisokogIntenziteta);


        seekBarIntervaliVisokogIntenziteta = (SeekBar) findViewById(R.id.seekBarIntervaliVisokogIntenziteta);
        seekBarIntervaliVisokogIntenziteta.setMax(60);
        seekBarIntervaliVisokogIntenziteta.setProgress(10);
        seekBarIntervaliVisokogIntenziteta.setOnSeekBarChangeListener(new SeekBar.OnSeekBarChangeListener() {
            @Override
            public void onProgressChanged(SeekBar seekBar, int progress, boolean fromUser) {
                textViewDisplaySekundiVisokogIntenziteta.setText(progress + " sekundi");
            }

            @Override
            public void onStartTrackingTouch(SeekBar seekBar) {

            }

            @Override
            public void onStopTrackingTouch(SeekBar seekBar) {

            }
        });

但是我在此活动中没有实际的计时器TextViewTextView每秒将减少其时间),它位于Activity B

我正在尝试通过这样的活动来传递它:

  public void homeScreenStart(View view){
        new CountDownTimer(seekBarIntervaliVisokogIntenziteta.getProgress() * 1000, 1000){

            @Override
            public void onTick(long millisUntilFinished) {
                Intent i = new Intent(HomeScreen.this, Timer.class);
                i.putExtra("visokiInterval", millisUntilFinished/1000);
                startActivity(i);
            }

            @Override
            public void onFinish() {
                Log.i("Finished", "Timer done");

            }
        }.start();
    }

注意-按下button时将调用方法homeScreenStart

并像这样在activity B获取它:

  textViewTimerVrijeme = (TextView) findViewById(R.id.textViewTimerVrijeme);
        Intent intent = getIntent();
        Bundle b = intent.getExtras();

        if (b!=null){
            String j = (String) b.get("visokiInterval");
            textViewTimerVrijeme.setText(j);
        }

我没有收到任何logcat错误,但是在Activity B我没有看到该TextView ,就像它不存在一样。

哪里出问题了?

活动B:

public class Timer extends AppCompatActivity {
    TextView proba, textViewTimerVrijeme;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_timer);
        Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);
        setSupportActionBar(toolbar);
        getSupportActionBar().setDisplayHomeAsUpEnabled(true);

        textViewTimerVrijeme = (TextView) findViewById(R.id.textViewTimerVrijeme);
        Intent intent = getIntent();
        Bundle b = intent.getExtras();

        if (b!=null){
            String j = (String) b.get("visokiInterval");
            textViewTimerVrijeme.setText(j);
        }
    }


    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        // Inflate the menu; this adds items to the action bar if it is present.
        getMenuInflater().inflate(R.menu.menu_timer, menu);
        return true;
    }

    @Override
    public boolean onOptionsItemSelected(MenuItem item) {
        switch (item.getItemId()) {
            case R.id.action_pause:
        }

        return super.onOptionsItemSelected(item);
    }

}

在putExtra中传递字符串值

i.putExtra("visokiInterval", String.valueOf(millisUntilFinished/1000));

活动b变更

 Bundle extras = getIntent().getExtras();
    if (extras != null) {
        String j = extras.getString("visokiInterval");
    }

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM