/
Libra
/
my-application
Обзор
Документация
Войти
/
Libra
/
my-application
Код
Запросы
0
Задачи
Вики
Пакеты
0
Релизы
0
CI/CD
Аналитика
Безопасность
master
app/src/main/java/com/libraprogramming/myapplication/presentation/activity/MainActivity.java
145 строк
6 KB
Толмачёв Владимир Викторович
Architecture refactoring 2
20 июл 2026, 17:22
20 июл 2026, 17:22
87aa6f2
Код
Авторство
О чём код?
package com.libraprogramming.myapplication.presentation.activity; import android.app.Notification; import android.app.NotificationChannel; import android.app.NotificationManager; import android.content.Context; import android.content.Intent; import android.content.SharedPreferences; import android.os.Bundle; import android.os.Handler; import android.os.Looper; import android.util.Log; import android.widget.Toast; import android.window.OnBackInvokedDispatcher; import androidx.core.app.NotificationCompat; import androidx.preference.PreferenceManager; import androidx.appcompat.app.AppCompatActivity; import androidx.navigation.NavController; import androidx.navigation.Navigation; import androidx.navigation.ui.AppBarConfiguration; import androidx.navigation.ui.NavigationUI; import com.libraprogramming.myapplication.MyApplication; import com.libraprogramming.myapplication.R; import com.libraprogramming.myapplication.databinding.ActivityMainBinding; import android.view.Menu; import android.view.MenuItem; import com.libraprogramming.myapplication.presentation.internal.di.HasComponent; import com.libraprogramming.myapplication.presentation.internal.di.component.CardComponent; import com.libraprogramming.myapplication.presentation.internal.di.component.DaggerCardComponent; public class MainActivity extends AppCompatActivity implements HasComponent<CardComponent> { private final static String TAG = "MainActivity"; private AppBarConfiguration appBarConfiguration; private NavController navController; private ActivityMainBinding binding; private CardComponent component; private boolean doubleBackToExitPressedOnce = false; private Toast exitHintToast; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); ((MyApplication) getApplication()).getApplicationComponent().inject(this); component = DaggerCardComponent.builder() .myApplicationComponent(((MyApplication) getApplication()).getApplicationComponent()) .build(); binding = ActivityMainBinding.inflate(getLayoutInflater()); setContentView(binding.getRoot()); setSupportActionBar(binding.toolbar); navController = Navigation.findNavController(this, R.id.nav_host_fragment_content_main); appBarConfiguration = new AppBarConfiguration.Builder(navController.getGraph()).build(); NavigationUI.setupActionBarWithNavController(this, navController, appBarConfiguration); binding.fab.setOnClickListener(view -> { // MainActivity.this.navController.navigate(R.id.navigate_to_add_card); NotificationManager notificationManager = (NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE); NotificationCompat.Builder builder = new NotificationCompat.Builder(this, NotificationChannel.EDIT_IMPORTANCE); Notification notification = builder .setContentTitle("My Application") .setContentText("This is simple notification") .setSmallIcon(com.google.android.material.R.drawable.ic_search_black_24) .setProgress(100, 100, true) .build(); notificationManager.notify(1, notification); }); getOnBackInvokedDispatcher().registerOnBackInvokedCallback(OnBackInvokedDispatcher.PRIORITY_DEFAULT, () -> { if (MainActivity.this.doubleBackToExitPressedOnce) { if (MainActivity.this.exitHintToast != null) { MainActivity.this.exitHintToast.cancel(); MainActivity.this.exitHintToast = null; } MainActivity.this.finish(); return; } MainActivity.this.doubleBackToExitPressedOnce = true; MainActivity.this.exitHintToast = Toast.makeText(this, "Please click BACK again to exit", Toast.LENGTH_SHORT); MainActivity.this.exitHintToast.addCallback(new Toast.Callback() { @Override public void onToastHidden() { super.onToastHidden(); MainActivity.this.exitHintToast = null; } }); MainActivity.this.exitHintToast.show(); new Handler(Looper.getMainLooper()).postDelayed( () -> MainActivity.this.doubleBackToExitPressedOnce = false, 2000 ); }); SharedPreferences preferences = PreferenceManager.getDefaultSharedPreferences(this); String currentTheme = preferences.getString("current_theme", "NotSet"); Log.d(TAG, String.format("Current theme: \"%s\"", currentTheme)); } @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_main, menu); return true; } @Override public boolean onOptionsItemSelected(MenuItem item) { // Handle action bar item clicks here. The action bar will // automatically handle clicks on the Home/Up button, so long // as you specify a parent activity in AndroidManifest.xml. int id = item.getItemId(); //noinspection SimplifiableIfStatement if (id == R.id.action_settings) { startActivity( new Intent(MainActivity.this, ApplicationSettingsActivity.class) ); return true; } return super.onOptionsItemSelected(item); } @Override public boolean onSupportNavigateUp() { NavController navController = Navigation.findNavController(this, R.id.nav_host_fragment_content_main); return NavigationUI.navigateUp(navController, appBarConfiguration) || super.onSupportNavigateUp(); } @Override public CardComponent getComponent() { return component; } }