У меня есть одно упражнение и три фрагмента.Во фрагменте (1) у меня есть хронометр, который работает отлично.Во-первых, я нажимаю кнопку запуска хронометра.Когда хронометр показывает 00:10, я открываю фрагмент (2).Затем я возвращаюсь через 6 секунд, хронометр показывает 00:00.Я хочу, чтобы он показывал 00:16 и продолжал работать, пока я меняю фрагменты.
Fragment (1) xml.
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
>
<Chronometer
android:id="@+id/chronometer"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentTop="true"
android:layout_centerHorizontal="true"
android:layout_marginTop="25dp"
android:textSize="70dp"
android:textColor="#fff"
/>
<Button
android:id="@+id/btn_Start"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Start"
android:layout_centerHorizontal="true"
android:layout_marginTop="20dp"
android:layout_below="@+id/chronometer"
android:background="@drawable/btn_bg"
android:textColor="#fff"
/>
<Button
android:id="@+id/btn_Pause"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Pause"
android:layout_centerHorizontal="true"
android:layout_below="@+id/btn_Start"
android:background="@drawable/btn_bg"
android:layout_marginTop="20dp"
android:textColor="#fff"/>
<Button
android:id="@+id/btn_Reset"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Reset"
android:layout_centerHorizontal="true"
android:layout_below="@+id/btn_Pause"
android:background="@drawable/btn_bg"
android:layout_marginTop="20dp"
android:textColor="#fff"/>
<Button
android:id="@+id/btn_Back"
android:layout_width="50dp"
android:layout_height="wrap_content"
android:layout_alignTop="@+id/btn_Reset"
android:layout_alignParentStart="true"
android:layout_alignParentLeft="true"
android:layout_marginLeft="20dp"
android:layout_marginTop="0dp"
android:background="@drawable/btn_bg_2"
android:drawableRight="@drawable/ic_fast_rewind_black_24dp"
android:textColor="#fff" />
<Button
android:id="@+id/btn_Forward"
android:layout_width="50dp"
android:layout_height="wrap_content"
android:layout_alignTop="@+id/btn_Reset"
android:layout_alignParentRight="true"
android:layout_marginRight="30dp"
android:background="@drawable/btn_bg_2"
android:drawableLeft="@drawable/ic_fast_forward_black_24dp"
android:textColor="#fff" />
</RelativeLayout>
Это мой фрагмент (1) java-кода.
public class HomeFragment extends Fragment {
private Button btn_start;
private Button btn_pause;
private Button btn_reset;
private Button btn_back;
private Button btn_forward;
@Nullable
@Override
public View onCreateView(@NonNull LayoutInflater inflater, @Nullable
ViewGroup container, @Nullable Bundle savedInstanceState) {
View view= inflater.inflate(R.layout.fragment_home, container, false);
chronometer = view.findViewById(R.id.chronometer);
chronometer.setFormat("%s");
btn_forward= view.findViewById(R.id.btn_Forward);
btn_back = view.findViewById(R.id.btn_Back);
btn_start= view.findViewById(R.id.btn_Start);
btn_pause= view.findViewById(R.id.btn_Pause);
btn_reset= view.findViewById(R.id.btn_Reset);
btn_back.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
backChronometer();
}
});
btn_forward.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
forwardChronometer();
}
});
btn_start.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
startChronometer();
}
});
btn_pause.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
pauseChronometer();
}
});
btn_reset.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
pauseChronometer();
resetChronometer();
}
});
return view;
}
}
Это код Java хронометра.(методы)
public class Chronometer {
public static long pauseOffset;
public static boolean running;
public static void startChronometer (){
if(!running){
chronometer.setBase(SystemClock.elapsedRealtime() - pauseOffset);
chronometer.start();
running = true;
}
}
public static void pauseChronometer (){
if (running){
pauseOffset = SystemClock.elapsedRealtime() - chronometer.getBase();
chronometer.stop();
running = false;
}
}
public static void resetChronometer (){
chronometer.setBase(SystemClock.elapsedRealtime());
pauseOffset = 0;
}
public static void forwardChronometer (){
if (running) {
chronometer.setBase(chronometer.getBase()-1000);
}
}
public static void backChronometer (){
if (running) {
chronometer.setBase(chronometer.getBase()+1000);
}
}
}
MainActivity Java-код.
public class MainActivity extends AppCompatActivity {
public static Chronometer chronometer;
public static TextView tv_rune;
public static SeekBar sb_rune;
public static int minrune = 0, maxrune = 35, currentrune;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
BottomNavigationView bottomNav = findViewById(R.id.bottom_navigation);
bottomNav.setOnNavigationItemSelectedListener(navListener);
getSupportFragmentManager().beginTransaction().replace(R.id.main_frame,
new HomeFragment()).commit();
}
private BottomNavigationView.OnNavigationItemSelectedListener navListener =
new BottomNavigationView.OnNavigationItemSelectedListener() {
@Override
public boolean onNavigationItemSelected(@NonNull MenuItem
menuItem) {
Fragment selectedFragment = null;
switch (menuItem.getItemId()){
case R.id.navigation_home:
selectedFragment = new HomeFragment();
break;
case R.id.navigation_notifications:
selectedFragment = new NotificationsFragment();
break;
case R.id.navigation_info:
selectedFragment = new InfoFragment();
break;
}
getSupportFragmentManager().beginTransaction().replace(R.id.main_frame,
selectedFragment).commit();
return true;
}
};
}
Также я хочу сохранить данные поисковой панели от фрагмента (2), чтобы использовать их во фрагменте (1).На самом деле, мне интересно, как мы можем защитить данные.