Android Java – пользовательский интерфейс не загружается с перерывамиJAVA

Программисты JAVA общаются здесь
Ответить
Anonymous
 Android Java – пользовательский интерфейс не загружается с перерывами

Сообщение Anonymous »

Я разрабатываю приложение для Android с использованием Java.
Когда я запускаю приложение в Android Studio, пользовательский интерфейс не загружается полностью, я вижу нижнюю навигацию и панель инструментов, но фрагменты не загружаются в 90 % случаев, когда я запускаю приложение в Android Studio.
Это основной макет при загрузке приложения:

Код: Выделить всё

    package com.balu.datez;
import com.google.gson.Gson;
import com.microsoft.signalr.HubConnection;
import com.microsoft.signalr.HubConnectionBuilder;

import android.content.Intent;
import android.content.SharedPreferences;
import android.os.Bundle;
import androidx.activity.OnBackPressedCallback;
import androidx.annotation.NonNull;
import androidx.appcompat.app.ActionBarDrawerToggle;
import androidx.appcompat.app.AppCompatActivity;
import androidx.core.view.GravityCompat;
import androidx.drawerlayout.widget.DrawerLayout;

import android.os.Handler;
import android.os.Looper;
import android.view.MenuItem;
import android.widget.Toast;
import androidx.appcompat.widget.Toolbar;

import com.google.android.material.bottomnavigation.BottomNavigationView;
import com.google.android.material.navigation.NavigationView;
import com.microsoft.signalr.HubConnectionState;

import androidx.activity.EdgeToEdge;
import androidx.fragment.app.Fragment;
import androidx.fragment.app.FragmentManager;
import androidx.fragment.app.FragmentTransaction;

import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;

public class MainLayoutActivity extends AppCompatActivity {

SignalRConnectionsMainHelper signalConnectionsMainHelper;
SignalRFollowsMainHelper signalRFollowsMainHelper;
private DrawerLayout drawerLayout;
private NavigationView navigationView;
private Toolbar toolbar;
Fragment homeFragment;
InteractionsFragment interactionFragment;
Fragment highlightsFragment;
Fragment searchFragment;
FragmentTransaction transaction;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
EdgeToEdge.enable(this);
setContentView(R.layout.activity_main_layout);

HttpsHelper.trustAllCertificates();

SharedPreferences settingsLoginData = getApplicationContext().getSharedPreferences("LoginData", 0);
String userGuidSP = settingsLoginData.getString("userGuid", "");

drawerLayout = findViewById(R.id.drawer_layout);
toolbar = findViewById(R.id.toolbar);
navigationView = findViewById(R.id.nav_view);

Intent intent = getIntent();
if(intent.getBooleanExtra("newProfileAdded", false)){

}

BottomNavigationView bottomNavigationView = findViewById(R.id.bottomNavigationView);

FragmentManager fragmentManager = getSupportFragmentManager();
transaction = fragmentManager.beginTransaction();

homeFragment = new HomeFragment();
interactionFragment = new InteractionsFragment();
highlightsFragment = new HighlightsFragment();
searchFragment = new SearchFragment();

signalConnectionsMainHelper = new SignalRConnectionsMainHelper(this, interactionFragment, userGuidSP);
signalRFollowsMainHelper = new SignalRFollowsMainHelper(this, interactionFragment, userGuidSP);

new Thread(() -> {
transaction.add(R.id.fragment_container, homeFragment);
transaction.add(R.id.fragment_container, interactionFragment);
transaction.add(R.id.fragment_container, highlightsFragment);
transaction.add(R.id.fragment_container, searchFragment);

toolbar.setTitle("Home");

transaction.show(homeFragment);
transaction.hide(interactionFragment);
transaction.hide(highlightsFragment);
transaction.hide(searchFragment);
transaction.commit();   // crashes in RUN, sometimes works in DEBUG
}).start();

//setCurrentFragment(homeFragment, "Home");

bottomNavigationView.setOnItemSelectedListener(item ->  {
FragmentTransaction transactionTemp = getSupportFragmentManager().beginTransaction();

switch (item.getItemId()) {
case R.id.home:
toolbar.setTitle("Home");
transactionTemp.show(homeFragment);
transactionTemp.hide(interactionFragment);
transactionTemp.hide(highlightsFragment);
transactionTemp.hide(searchFragment);
transactionTemp.commit();
break;
case R.id.interations:
toolbar.setTitle("Interactions");
transactionTemp.hide(homeFragment);
transactionTemp.show(interactionFragment);
transactionTemp.hide(highlightsFragment);
transactionTemp.hide(searchFragment);
transactionTemp.commit();
break;
case R.id.highlights:
toolbar.setTitle("Highlights");
transactionTemp.hide(homeFragment);
transactionTemp.hide(interactionFragment);
transactionTemp.show(highlightsFragment);
transactionTemp.hide(searchFragment);
transactionTemp.commit();
break;
case R.id.search:
toolbar.setTitle("Search");
transactionTemp.hide(homeFragment);
transactionTemp.hide(interactionFragment);
transactionTemp.hide(highlightsFragment);
transactionTemp.show(searchFragment);
transactionTemp.commit();
break;
}
return true;
});

ActionBarDrawerToggle toggle = new ActionBarDrawerToggle(
this, drawerLayout, toolbar, R.string.nav_open, R.string.nav_close);
drawerLayout.addDrawerListener(toggle);
toggle.syncState();
navigationView.setNavigationItemSelectedListener(new NavigationView.OnNavigationItemSelectedListener() {

// Called when an item in the NavigationView is selected.
@Override
public boolean onNavigationItemSelected(@NonNull MenuItem item) {
// Handle the selected item based on its ID
FragmentTransaction transactionTemp = getSupportFragmentManager().beginTransaction();
if (item.getItemId() == R.id.nav_home) {
toolbar.setTitle("Home");
transactionTemp.show(homeFragment);
transactionTemp.hide(interactionFragment);
transactionTemp.hide(highlightsFragment);
transactionTemp.hide(searchFragment);
transactionTemp.commit();
MenuItem itemBottomNav = bottomNavigationView.getMenu().findItem(R.id.home);
itemBottomNav.setChecked(true);
// Show a Toast message for the Account item
//Toast.makeText(MainActivity.this,
//    "Account Details", Toast.LENGTH_SHORT).show();
}

if (item.getItemId() == R.id.nav_interactions) {
toolbar.setTitle("Interactions");
transactionTemp.hide(homeFragment);
transactionTemp.show(interactionFragment);
transactionTemp.hide(highlightsFragment);
transactionTemp.hide(searchFragment);
transactionTemp.commit();
MenuItem itemBottomNav = bottomNavigationView.getMenu().findItem(R.id.interations);
itemBottomNav.setChecked(true);
// Show a Toast message for the Settings item
//Toast.makeText(MainActivity.this,
//   "Settings Opened",  Toast.LENGTH_SHORT).show();
}

if (item.getItemId() == R.id.nav_highlights) {
toolbar.setTitle("Highlights");
transactionTemp.hide(homeFragment);
transactionTemp.hide(interactionFragment);
transactionTemp.show(highlightsFragment);
transactionTemp.hide(searchFragment);
transactionTemp.commit();
MenuItem itemBottomNav = bottomNavigationView.getMenu().findItem(R.id.highlights);
itemBottomNav.setChecked(true);
// Show a Toast message for the Logout item
//Toast.makeText(MainActivity.this,
//   "You are Logged Out", Toast.LENGTH_SHORT).show();
}

if (item.getItemId() == R.id.nav_search) {
toolbar.setTitle("Search");
transactionTemp.hide(homeFragment);
transactionTemp.hide(interactionFragment);
transactionTemp.hide(highlightsFragment);
transactionTemp.show(searchFragment);
transactionTemp.commit();
MenuItem itemBottomNav = bottomNavigationView.getMenu().findItem(R.id.search);
itemBottomNav.setChecked(true);
// Show a Toast message for the Logout item
//Toast.makeText(MainActivity.this,
//   "You are Logged Out", Toast.LENGTH_SHORT).show();
}

// Close the drawer after selection
drawerLayout.closeDrawers();
// Indicate that the item selection has been handled
return true;
}
});

// Add a callback to handle the back button press
getOnBackPressedDispatcher().addCallback(this, new OnBackPressedCallback(true) {
// Called when the back button is pressed.
@Override
public void handleOnBackPressed() {
// Check if the drawer is open
if (drawerLayout.isDrawerOpen(GravityCompat.START)) {
// Close the drawer if it's open
drawerLayout.closeDrawer(GravityCompat.START);
} else {
// Finish the activity if the drawer is closed
finish();
}
}
});
}

private void setCurrentFragment(Fragment fragment, String title) {
toolbar.setTitle(title);
getSupportFragmentManager()
.beginTransaction()
.replace(R.id.fragment_container, fragment)
.commit();
}
}
Это связано с Android Studio или с моим кодом?
Я пробовал:

Код: Выделить всё

new Thread(() -> {
transaction.add(R.id.fragment_container, homeFragment);
transaction.add(R.id.fragment_container, interactionFragment);
transaction.add(R.id.fragment_container, highlightsFragment);
transaction.add(R.id.fragment_container, searchFragment);

toolbar.setTitle("Home");

transaction.show(homeFragment);
transaction.hide(interactionFragment);
transaction.hide(highlightsFragment);
transaction.hide(searchFragment);
transaction.commit();  // crashes in RUN, sometimes works in DEBUG
}).start();
Но все равно не повезло.

Подробнее здесь: https://stackoverflow.com/questions/798 ... rmittently
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «JAVA»