Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/324.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java Android片段工具栏文本未更改_Java_Android_Android Fragments_Android Toolbar - Fatal编程技术网

Java Android片段工具栏文本未更改

Java Android片段工具栏文本未更改,java,android,android-fragments,android-toolbar,Java,Android,Android Fragments,Android Toolbar,我正在开发一个带有片段的应用程序。当我打开导航抽屉中未列出的片段时。例如,我有8个片段,其中7个片段列在导航抽屉中,另一个未列在导航抽屉中(Fragmentname是子类别Fragment)。我可以使用下面的代码更改7Fragment的工具栏标题。但我无法更改未在导航抽屉中列出的Fragment的工具栏标题 MyHomeActivity.java public class HomeActivity extends AppCompatActivity implements FragmentDraw

我正在开发一个带有
片段的应用程序。当我打开导航抽屉中未列出的
片段时。例如,我有8个片段,其中7个片段列在导航抽屉中,另一个未列在导航抽屉中(
Fragment
name是子类别
Fragment
)。我可以使用下面的代码更改7
Fragment
的工具栏标题。但我无法更改未在导航抽屉中列出的
Fragment
的工具栏标题

My
HomeActivity.java

public class HomeActivity extends AppCompatActivity implements FragmentDrawer.FragmentDrawerListener {
    private Toolbar mToolbar;
    private FragmentDrawer drawerFragment;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_home);
        mToolbar = (Toolbar) findViewById(R.id.toolbar);
        setSupportActionBar(mToolbar);
        getSupportActionBar().setDisplayShowHomeEnabled(true);
        drawerFragment = (FragmentDrawer)
                getSupportFragmentManager().findFragmentById(R.id.fragment_navigation_drawer);
        drawerFragment.setUp(R.id.fragment_navigation_drawer, (DrawerLayout) findViewById(R.id.drawer_layout), mToolbar);
        drawerFragment.setDrawerListener(this);

        displayView(0);
    }

    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        getMenuInflater().inflate(R.menu.menu_main, menu);
        return true;
    }

    @Override
    public void onDrawerItemSelected(View view, int position) {
        displayView(position);
    }

    public void displayView(int position) {
        Fragment fragment = null;
        String title = getString(R.string.app_name);
        switch (position) {
            case 0:
                fragment = new HomeFragment();
                title = getString(R.string.title_home);
                Log.d("LOGTAG", "Home");
                break;
            case 1:
                fragment = new CategoriesFragment();
                title = getString(R.string.title_categories);
                Log.d("LOGTAG", "Categories");
                break;
            case 2:
                fragment = new MyOrdersFragment();
                title = getString(R.string.title_myorders);
                Log.d("LOGTAG", "My Orders");
                break;
            case 3:
                fragment = new WalletFragment();
                title = getString(R.string.title_wallet);
                Log.d("LOGTAG", "Wallet");
                break;
            case 4:
                fragment = new AccountSettingsFragment();
                title = getString(R.string.title_account_settings);
                Log.d("LOGTAG", "Account Settings");
                break;
            case 5:
                fragment = new AboutUsFragment();
                title = getString(R.string.title_aboutus);
                Log.d("LOGTAG", "About Us");
                break;
            case 6:
                fragment = new ContactUsFragment();
                title = getString(R.string.title_contactus);
                Log.d("LOGTAG", "Contact Us");
                break;
            case 7:
                fragment = new LogOutFragment();
                title = getString(R.string.title_logout);
                Log.d("LOGTAG", "Log out");
                break;
            case 8:
                fragment = new SubCategoryFragment();
                title = getString(R.string.title_sub_categories);
                Log.d("LOGTAG", "Sub Categories");
                break;
            default:
                break;
        }

        if (fragment != null) {
            FragmentManager fragmentManager = getSupportFragmentManager();
            FragmentTransaction fragmentTransaction = fragmentManager.beginTransaction();
            fragmentTransaction.replace(R.id.container_body, fragment);
            fragmentTransaction.commit();

            // set the toolbar title
            getSupportActionBar().setTitle(title);
        }
    }

    public void loadFragment(int id, Fragment fragment) {
        FragmentTransaction ft = getSupportFragmentManager().beginTransaction();
        ft.replace(id, fragment, fragment.toString());
        ft.addToBackStack(null);
        ft.commit();
    }
}
public class SubCategoryFragment extends android.support.v4.app.Fragment {
    List<GetDataAdapter> GetDataAdapter1;
    RecyclerView recyclerView;
    RecyclerView.LayoutManager recyclerViewlayoutManager;
    RecyclerView.Adapter recyclerViewadapter;

    String GET_JSON_DATA_HTTP_URL;
    String JSON_IMAGE_TITLE_NAME = "image_title";
    String JSON_IMAGE_URL = "image_url";
    String JSON_IMAGE_ID = "id";

    JsonArrayRequest jsonArrayRequest ;
    RequestQueue requestQueue ;

    public SubCategoryFragment() {
        // Required empty public constructor
    }

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
    }

    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container,
                             Bundle savedInstanceState) {
        View rootView = inflater.inflate(R.layout.fragment_sub_category, container, false);

        HomeActivity activity = new HomeActivity();
        activity.displayView(8); //Occuring error

        // Inflate the layout for this fragment
        return rootView;
    }

    @Override
    public void onAttach(Activity activity) {
        super.onAttach(activity);
    }

    @Override
    public void onDetach() {
        super.onDetach();
    }
}
以及
子类别fragment.java

public class HomeActivity extends AppCompatActivity implements FragmentDrawer.FragmentDrawerListener {
    private Toolbar mToolbar;
    private FragmentDrawer drawerFragment;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_home);
        mToolbar = (Toolbar) findViewById(R.id.toolbar);
        setSupportActionBar(mToolbar);
        getSupportActionBar().setDisplayShowHomeEnabled(true);
        drawerFragment = (FragmentDrawer)
                getSupportFragmentManager().findFragmentById(R.id.fragment_navigation_drawer);
        drawerFragment.setUp(R.id.fragment_navigation_drawer, (DrawerLayout) findViewById(R.id.drawer_layout), mToolbar);
        drawerFragment.setDrawerListener(this);

        displayView(0);
    }

    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        getMenuInflater().inflate(R.menu.menu_main, menu);
        return true;
    }

    @Override
    public void onDrawerItemSelected(View view, int position) {
        displayView(position);
    }

    public void displayView(int position) {
        Fragment fragment = null;
        String title = getString(R.string.app_name);
        switch (position) {
            case 0:
                fragment = new HomeFragment();
                title = getString(R.string.title_home);
                Log.d("LOGTAG", "Home");
                break;
            case 1:
                fragment = new CategoriesFragment();
                title = getString(R.string.title_categories);
                Log.d("LOGTAG", "Categories");
                break;
            case 2:
                fragment = new MyOrdersFragment();
                title = getString(R.string.title_myorders);
                Log.d("LOGTAG", "My Orders");
                break;
            case 3:
                fragment = new WalletFragment();
                title = getString(R.string.title_wallet);
                Log.d("LOGTAG", "Wallet");
                break;
            case 4:
                fragment = new AccountSettingsFragment();
                title = getString(R.string.title_account_settings);
                Log.d("LOGTAG", "Account Settings");
                break;
            case 5:
                fragment = new AboutUsFragment();
                title = getString(R.string.title_aboutus);
                Log.d("LOGTAG", "About Us");
                break;
            case 6:
                fragment = new ContactUsFragment();
                title = getString(R.string.title_contactus);
                Log.d("LOGTAG", "Contact Us");
                break;
            case 7:
                fragment = new LogOutFragment();
                title = getString(R.string.title_logout);
                Log.d("LOGTAG", "Log out");
                break;
            case 8:
                fragment = new SubCategoryFragment();
                title = getString(R.string.title_sub_categories);
                Log.d("LOGTAG", "Sub Categories");
                break;
            default:
                break;
        }

        if (fragment != null) {
            FragmentManager fragmentManager = getSupportFragmentManager();
            FragmentTransaction fragmentTransaction = fragmentManager.beginTransaction();
            fragmentTransaction.replace(R.id.container_body, fragment);
            fragmentTransaction.commit();

            // set the toolbar title
            getSupportActionBar().setTitle(title);
        }
    }

    public void loadFragment(int id, Fragment fragment) {
        FragmentTransaction ft = getSupportFragmentManager().beginTransaction();
        ft.replace(id, fragment, fragment.toString());
        ft.addToBackStack(null);
        ft.commit();
    }
}
public class SubCategoryFragment extends android.support.v4.app.Fragment {
    List<GetDataAdapter> GetDataAdapter1;
    RecyclerView recyclerView;
    RecyclerView.LayoutManager recyclerViewlayoutManager;
    RecyclerView.Adapter recyclerViewadapter;

    String GET_JSON_DATA_HTTP_URL;
    String JSON_IMAGE_TITLE_NAME = "image_title";
    String JSON_IMAGE_URL = "image_url";
    String JSON_IMAGE_ID = "id";

    JsonArrayRequest jsonArrayRequest ;
    RequestQueue requestQueue ;

    public SubCategoryFragment() {
        // Required empty public constructor
    }

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
    }

    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container,
                             Bundle savedInstanceState) {
        View rootView = inflater.inflate(R.layout.fragment_sub_category, container, false);

        HomeActivity activity = new HomeActivity();
        activity.displayView(8); //Occuring error

        // Inflate the layout for this fragment
        return rootView;
    }

    @Override
    public void onAttach(Activity activity) {
        super.onAttach(activity);
    }

    @Override
    public void onDetach() {
        super.onDetach();
    }
}
公共类子类别Fragment扩展了android.support.v4.app.Fragment{
列出GetDataAdapter1;
回收视图回收视图;
RecyclerView.LayoutManager recyclerViewlayoutManager;
适配器RecycleWebAdapter;
字符串GET_JSON_DATA_HTTP_URL;
字符串JSON\u IMAGE\u TITLE\u NAME=“IMAGE\u TITLE”;
字符串JSON\u IMAGE\u URL=“IMAGE\u URL”;
字符串JSON_IMAGE_ID=“ID”;
JsonArrayRequest JsonArrayRequest;
请求队列请求队列;
公共子类别片段(){
//必需的空公共构造函数
}
@凌驾
创建时的公共void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
}
@凌驾
创建视图上的公共视图(布局、充气机、视图组容器、,
Bundle savedInstanceState){
视图根视图=充气机。充气(R.layout.fragment\u sub\u category,container,false);
HomeActivity活动=新的HomeActivity();
activity.displayView(8);//发生错误
//为该碎片膨胀布局
返回rootView;
}
@凌驾
公共事务主任(活动){
超级转速计(活动);
}
@凌驾
公共无效连接(){
super.onDetach();
}
}
当我在子类别
Fragment
中添加
activity.displayView(8)
时,它显示错误

java.lang.NullPointerException:尝试在空对象引用上调用虚拟方法“android.content.res.Resources android.content.Context.getResources()”

那么,如何更改
工具栏
文本?

您可以使用此选项

((AppCompatActivity)getActivity()).getSupportActionBar().setTitle("sub categories");
代替

 HomeActivity activity = new HomeActivity();
        activity.displayView(8); //Occuring error
你可以用这个

((AppCompatActivity)getActivity()).getSupportActionBar().setTitle("sub categories");
代替

 HomeActivity activity = new HomeActivity();
        activity.displayView(8); //Occuring error

您可以这样设置标题。 在子类别片段中:

工具栏工具栏

在oncreate视图()中{

mtoolbar=(Toolbar)getActivity.findviewbyd(R.id.toolbarid)

设置支持工具栏(mtoolbar):

}

然后在onActivityCreated()中{

((HomeActivity)getSupportCrionBar.settitle(“您的标题”)


}您可以这样设置标题。 在子类别片段中:

工具栏工具栏

在oncreate视图()中{

mtoolbar=(Toolbar)getActivity.findviewbyd(R.id.toolbarid)

设置支持工具栏(mtoolbar):

}

然后在onActivityCreated()中{

((HomeActivity)getSupportCrionBar.settitle(“您的标题”)


}

在Kotlin中,您可以使用以下功能:

(activity as AppCompatActivity).supportActionBar?.title = "Title here"

在Kotlin中,您可以使用以下各项:

(activity as AppCompatActivity).supportActionBar?.title = "Title here"

这就是不与父活动通信的方式
HomeActivity Activity=new HomeActivity();显示视图(8)//发生错误
您应该使用接口并将其附加到片段的附件中,但无论如何,为什么在onCreateView中您要尝试调用Activity方法?我的观点是,如果已经显示了片段,为什么要调用displayView Anyways,这是更改工具栏文本的另一种方法。这就是如何不与父活动通信
HomeActivity Activity=new HomeActivity();显示视图(8)//发生错误
您应该使用接口并将其附加到片段的附件中,但无论如何,为什么在onCreateView中您要尝试调用Activity方法?我的观点是,如果已经显示了片段,为什么要调用displayView呢?这是更改工具栏文本的另一种方法。