Я новичок в xamarin android.
У меня проблема с сбросом времени
Я хочу передать время активности SeeTime и сбросить время до 60 для этой активности, что также приведет к сбросу времени в MainActivity.
public class MainActivity : AppCompatActivity
{
public EditText timer;
Button btn;
public int elapsedTime; // counting values integer
Handler myHandler; // used to delay runnable for a second which delay_RATE
int delay_RATE = 1000; //delay
Java.Lang.Runnable r;
protected override void OnCreate(Bundle savedInstanceState)
{
base.OnCreate(savedInstanceState);
SetContentView(Resource.Layout.activity_main);
elapsedTime = 60; // default value
myHandler = new Handler(); //initializing handler
r = new Java.Lang.Runnable(Run);
timer = FindViewById<EditText>(Resource.Id.timertxt);
btn = FindViewById<Button>(Resource.Id.btn1);
btn.Click += Btn_Click;
Counter();
}
private void Btn_Click(object sender, System.EventArgs e)
{
elapsedTime = 20;
StartActivity(typeof(SeeTime));
}
void Counter()
{
elapsedTime--; // increment
timer.Text = elapsedTime.ToString();
myHandler.PostDelayed(r, delay_RATE);
if (elapsedTime == 0)
{
elapsedTime = 20;
}
}
void Run()
{ Counter(); }
SeeTime Activity:
public class SeeTime : Activity
{
MainActivity mainActivity;
private EditText timer;
protected override void OnCreate(Bundle savedInstanceState)
{
base.OnCreate(savedInstanceState);
SetContentView(Resource.Layout.Time);
timer = FindViewById<EditText>(Resource.Id.txtTime);
mainActivity = new MainActivity();
timer.Text = mainActivity.timer.Text;
// Create your application here
}
}





Вы можете попробовать следующий метод, чтобы передать elapsedTime из MainActivity в активность SeeTime.
//Основная деятельность
var intent = new Intent(this, typeof(SeeTime));
intent.PutExtra("Timer", elapsedTime);
StartActivity(intent);
// SeeTime acticity
int intValue = Intent.Extras.GetInt("Timer", 20);
Кроме того, когда вы вернетесь из активности SeeTime в MainActivity, вы можете использовать метод OnResume() для сброса elapsedTime на 60. Подробнее: https://docs.microsoft.com/en-us/xamarin/android/app-fundamentals/activity-lifecycle/
Итак, код такой:
Основная деятельность
using Android.App;
using Android.OS;
using Android.Support.V7.App;
using Android.Runtime;
using Android.Widget;
using Android.Content;
namespace App80
{
[Activity(Label = "@string/app_name", Theme = "@style/AppTheme", MainLauncher = true)]
public class MainActivity : AppCompatActivity
{
public EditText timer;
Button btn;
public int elapsedTime; // counting values integer
Handler myHandler; // used to delay runnable for a second which delay_RATE
int delay_RATE = 1000; //delay
Java.Lang.Runnable r;
protected override void OnCreate(Bundle savedInstanceState)
{
base.OnCreate(savedInstanceState);
SetContentView(Resource.Layout.activity_main);
elapsedTime = 60; // default value
myHandler = new Handler(); //initializing handler
r = new Java.Lang.Runnable(Run);
timer = FindViewById<EditText>(Resource.Id.timertxt);
btn = FindViewById<Button>(Resource.Id.btn1);
btn.Click += Btn_Click;
Counter();
}
protected override void OnResume()
{
base.OnResume();
elapsedTime = 60;
timer.Text = elapsedTime.ToString();
}
private void Btn_Click(object sender, System.EventArgs e)
{
var intent = new Intent(this, typeof(SeeTime));
intent.PutExtra("Timer", elapsedTime);
StartActivity(intent);
}
void Counter()
{
elapsedTime--; // increment
timer.Text = elapsedTime.ToString();
myHandler.PostDelayed(r, delay_RATE);
if (elapsedTime == 0)
{
elapsedTime = 20;
}
}
void Run()
{ Counter(); }
}
}
SeeTime Activity:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using Android.App;
using Android.Content;
using Android.OS;
using Android.Runtime;
using Android.Views;
using Android.Widget;
namespace App80
{
[Activity(Label = "SeeTime")]
public class SeeTime : Activity
{
//MainActivity mainActivity;
private EditText timer;
protected override void OnCreate(Bundle savedInstanceState)
{
base.OnCreate(savedInstanceState);
SetContentView(Resource.Layout.Time);
timer = FindViewById<EditText>(Resource.Id.txtTime);
int intValue = Intent.Extras.GetInt("Timer", 20);
timer.Text = intValue.ToString();
}
}
}
Спасибо за ответ, я получил ответ
@Hafeezali Если мой ответ может помочь, я был бы признателен, если бы вы отметили его.
Я отправил ответ и надеюсь, что это поможет решить вашу проблему.