У меня два фрагмента заменены на одной странице.
но при запуске приложения вижу эту ошибку:
java.lang.NullPointerException: Attempt to invoke virtual method 'void android.support.v7.widget.Toolbar.setTitleTextColor(int)' on a null object reference
Это мой activity_main.xml:
<?xml version = "1.0" encoding = "utf-8"?>
<android.support.v4.widget.DrawerLayout xmlns:android = "http://schemas.android.com/apk/res/android"
xmlns:app = "http://schemas.android.com/apk/res-auto"
xmlns:tools = "http://schemas.android.com/tools"
android:id = "@+id/drawer_layout"
android:layout_width = "match_parent"
android:layout_height = "match_parent"
android:background = "@color/background"
android:layoutDirection = "rtl">
<ScrollView
android:layout_width = "match_parent"
android:layout_height = "match_parent">
<FrameLayout
android:id = "@+id/fragment_container"
android:layout_width = "match_parent"
android:layout_height = "match_parent">
</FrameLayout>
</ScrollView>
<android.support.design.widget.NavigationView
android:id = "@+id/nav_view"
android:layout_width = "wrap_content"
android:layout_height = "match_parent"
android:layout_gravity = "start"
app:headerLayout = "@layout/layout_navigation_header"
app:menu = "@menu/drawer_view" />
</android.support.v4.widget.DrawerLayout>
Это моя полная MainActivity, в которой есть метод RFragment для замены:
import android.support.annotation.NonNull;
import android.support.design.widget.NavigationView;
import android.support.v4.app.Fragment;
import android.support.v4.app.FragmentManager;
import android.support.v4.app.FragmentTransaction;
import android.support.v4.content.ContextCompat;
import android.support.v4.widget.DrawerLayout;
import android.support.v7.app.ActionBar;
import android.support.v7.app.ActionBarDrawerToggle;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.support.v7.widget.LinearLayoutManager;
import android.support.v7.widget.RecyclerView;
import android.support.v7.widget.Toolbar;
import android.view.MenuItem;
import com.example.exampleOne.myapplication.Adapter.AdapterSpecial;
import com.example.exampleOne.myapplication.DataFake.DataFakeGenerator;
import com.example.exampleOne.myapplication.Fragments.HomeFragment;
public class MainActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
setupToolbar();
//change fragments with Navigation View
NavigationView navigationView = (NavigationView)findViewById(R.id.nav_view);
RFragment(new HomeFragment());
navigationView.setNavigationItemSelectedListener(new NavigationView.OnNavigationItemSelectedListener() {
@Override
public boolean onNavigationItemSelected(@NonNull MenuItem item) {
switch (item.getItemId()) {
case R.id.nav_home:
break;
case R.id.nav_login:
break;
}
return true;
}
});
RecyclerView recyclerView = findViewById(R.id.special_offers_re);
recyclerView.setLayoutManager(new LinearLayoutManager(this, LinearLayoutManager.HORIZONTAL, false));
recyclerView.setAdapter(new AdapterSpecial(this, DataFakeGenerator.SpecailProduct(this)));
RecyclerView recyclerView1 = findViewById(R.id.special_offers_re1);
recyclerView1.setLayoutManager(new LinearLayoutManager(this, LinearLayoutManager.HORIZONTAL, false));
recyclerView1.setAdapter(new AdapterSpecial(this, DataFakeGenerator.SpecailProduct(this)));
}
public void setupToolbar() {
Toolbar toolbar = findViewById(R.id.toolbar);
DrawerLayout drawerLayout = findViewById(R.id.drawer_layout);
setSupportActionBar(toolbar);
ActionBar actionBar = getSupportActionBar();
toolbar.setTitleTextColor(ContextCompat.getColor(this, R.color.white));
actionBar.setDisplayHomeAsUpEnabled(true);
actionBar.setHomeButtonEnabled(true);
ActionBarDrawerToggle actionBarDrawerToggle = new ActionBarDrawerToggle(this, drawerLayout, toolbar, 0, 0);
actionBarDrawerToggle.syncState();
}
public void RFragment(Fragment fragment){
FragmentManager fragmentManager = getSupportFragmentManager();
FragmentTransaction fragmentTransaction = fragmentManager.beginTransaction();
fragmentTransaction.add(R.id.fragment_container,fragment);
fragmentTransaction.commit();
}
}




Это происходит потому, что у вас нет панели инструментов в файле activity_main.xml.
Эта строка показывает, что вы хотите найти панель инструментов просмотра, которой нет в activity_main.xml.
Toolbar toolbar = findViewById(R.id.toolbar);
Итак, вы получили ошибку в строке ниже, потому что панель инструментов не существует и ее значение null
toolbar.setTitleTextColor(ContextCompat.getColor(this, R.color.white));
الان تو activity_main.xml د با ایدی панель инструментов رو به من نشون بده
ببین تو ایکس ام ال هیچ تولباری نساختی هیچ آیدی ای نیست به اسم
"@ + id / toolbar" не существует в activity_main.xml
بله درسته .واقعا ممنون دارم .دارم کد ها رو به فرگمنت که تولبار توش هست انتقال می دم.
حله امیدوارم موفق باشی
показать полный код части mainActivity