Java 无法检索片段中的上下文
我尝试使用多种资源找到解决方案: 但我还是犯了以下错误:Java 无法检索片段中的上下文,java,android,android-fragments,Java,Android,Android Fragments,我尝试使用多种资源找到解决方案: 但我还是犯了以下错误: Caused by: java.lang.NullPointerException: Attempt to invoke virtual method 'android.content.Context android.support.v4.app.FragmentActivity.getApplicationContext()' on a null object reference 任何帮助都将不胜感激。谢谢 我目前的代码: An
Caused by: java.lang.NullPointerException: Attempt to invoke virtual method 'android.content.Context android.support.v4.app.FragmentActivity.getApplicationContext()' on a null object reference
任何帮助都将不胜感激。谢谢
我目前的代码: AnalysisActivity.java:
package com.app.component.fragment;
import android.os.Bundle;
import android.support.design.widget.TabLayout;
import android.support.v4.app.Fragment;
import android.support.v4.app.FragmentManager;
import android.support.v4.app.FragmentPagerAdapter;
import android.support.v4.view.ViewPager;
import android.support.v7.app.AppCompatActivity;
import android.support.v7.widget.Toolbar;
import com.material.components.R;
import com.material.components.fragment.FragmentTabsEvents;
import com.material.components.fragment.FragmentTabsPerformance;
import com.material.components.fragment.FragmentTabsRecommendation;
import com.material.components.utils.Tools;
import java.util.ArrayList;
import java.util.List;
public class AnalysisActivity extends AppCompatActivity {
private ViewPager view_pager;
private TabLayout tab_layout;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_analysis);
Toolbar toolbar = findViewById(R.id.toolbar);
setSupportActionBar(toolbar);
getSupportActionBar().setHomeButtonEnabled(true);
getSupportActionBar().setDisplayHomeAsUpEnabled(true);
Tools.setSystemBarColor(this,R.color.black);
view_pager = findViewById(R.id.view_pager);
setupViewPager(view_pager);
tab_layout = findViewById(R.id.tab_layout);
tab_layout.setupWithViewPager(view_pager);
}
private void setupViewPager(ViewPager viewPager) {
SectionsPagerAdapter adapter = new SectionsPagerAdapter(getSupportFragmentManager());
adapter.addFragment(FragmentTabsPerformance.newInstance(), "PERFORMANCE");
adapter.addFragment(FragmentTabsRecommendation.newInstance(), "RECOMMENDATION");
adapter.addFragment(FragmentTabsEvents.newInstance(), "EVENTS RELATED TO YOU");
viewPager.setAdapter(adapter);
}
private class SectionsPagerAdapter extends FragmentPagerAdapter {
private final List<Fragment> mFragmentList = new ArrayList<>();
private final List<String> mFragmentTitleList = new ArrayList<>();
public SectionsPagerAdapter(FragmentManager manager) {
super(manager);
}
@Override
public Fragment getItem(int position) {
return mFragmentList.get(position);
}
@Override
public int getCount() {
return mFragmentList.size();
}
public void addFragment(Fragment fragment, String title) {
mFragmentList.add(fragment);
mFragmentTitleList.add(title);
}
@Override
public CharSequence getPageTitle(int position) {
return mFragmentTitleList.get(position);
}
}
@Override
public boolean onSupportNavigateUp() {
onBackPressed();
return true;
}
}
package com.app.component.fragment;
导入android.os.Bundle;
导入android.support.design.widget.TabLayout;
导入android.support.v4.app.Fragment;
导入android.support.v4.app.FragmentManager;
导入android.support.v4.app.FragmentPagerAdapter;
导入android.support.v4.view.ViewPager;
导入android.support.v7.app.AppActivity;
导入android.support.v7.widget.Toolbar;
导入com.material.components.R;
导入com.material.components.fragment.fragmentTableSevents;
导入com.material.components.fragment.FragmentTabsPerformance;
导入com.material.components.fragment.fragments选项卡推荐;
导入com.material.components.utils.Tools;
导入java.util.ArrayList;
导入java.util.List;
公共类AnalysisActivity扩展了AppCompatActivity{
私人视图寻呼机视图寻呼机;
专用表格布局选项卡_布局;
@凌驾
创建时受保护的void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_analysis);
Toolbar Toolbar=findviewbyd(R.id.Toolbar);
设置支持操作栏(工具栏);
getSupportActionBar().setHomeButtonEnabled(true);
getSupportActionBar().setDisplayHomeAsUpEnabled(true);
工具。设置颜色(此,R颜色。黑色);
view\u pager=findviewbyd(R.id.view\u pager);
设置查看寻呼机(查看寻呼机);
tab_布局=findViewById(R.id.tab_布局);
选项卡布局。使用查看页面设置(查看页面);
}
专用无效设置ViewPager(ViewPager ViewPager){
SectionsPagerAdapter=新的SectionsPagerAdapter(getSupportFragmentManager());
addFragment(FragmentTabsPerformance.newInstance(),“PERFORMANCE”);
addFragment(fragmentTabsRecommension.newInstance(),“Recommension”);
addFragment(FragmentTabsEvents.newInstance(),“与您相关的事件”);
viewPager.setAdapter(适配器);
}
私有类SectionsPagerAdapter扩展了FragmentPagerAdapter{
私有最终列表MFFragmentList=new ArrayList();
私有最终列表MFFragmentTitleList=new ArrayList();
公共部分SpagerAdapter(碎片管理器){
高级经理;
}
@凌驾
公共片段getItem(int位置){
返回MFFragmentList.get(位置);
}
@凌驾
public int getCount(){
返回MFFragmentList.size();
}
public void addFragment(片段片段,字符串标题){
添加(片段);
MFFragmentTitleList.add(标题);
}
@凌驾
公共字符序列getPageTitle(int位置){
返回MFFragmentTitleList.get(位置);
}
}
@凌驾
公共布尔onSupportNavigateUp(){
onBackPressed();
返回true;
}
}
FragmentTabsPerformance.java:
package com.app.component.fragment;
import android.content.Context;
import android.graphics.Color;
import android.os.Bundle;
import android.support.v4.app.Fragment;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ImageView;
import com.material.components.R;
import com.material.components.utils.Tools;
import java.util.ArrayList;
import java.util.List;
import lecho.lib.hellocharts.model.Line;
import lecho.lib.hellocharts.model.LineChartData;
import lecho.lib.hellocharts.model.PointValue;
import lecho.lib.hellocharts.view.LineChartView;
public class FragmentTabsPerformance extends Fragment {
private Context context;
public FragmentTabsPerformance() {
this.context = getActivity().getApplicationContext();
List<PointValue> values = new ArrayList<>();
values.add(new PointValue(0, 2));
values.add(new PointValue(1, 4));
values.add(new PointValue(2, 3));
values.add(new PointValue(3, 4));
//In most cased you can call data model methods in builder-pattern-like manner.
Line line = new Line(values).setColor(Color.BLUE).setCubic(true);
List<Line> lines = new ArrayList<>();
lines.add(line);
LineChartData data = new LineChartData();
data.setLines(lines);
LineChartView chart = new LineChartView(this.getContext());
chart.setLineChartData(data);
}
public static FragmentTabsPerformance newInstance() {
FragmentTabsPerformance fragment = new FragmentTabsPerformance();
return fragment;
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
View root = inflater.inflate(R.layout.fragment_tabs_performance, container, false);
Tools.displayImageOriginal(getActivity(), (ImageView) root.findViewById(R.id.image_1), R.drawable.image_8);
Tools.displayImageOriginal(getActivity(), (ImageView) root.findViewById(R.id.image_2), R.drawable.image_9);
Tools.displayImageOriginal(getActivity(), (ImageView) root.findViewById(R.id.image_3), R.drawable.image_15);
Tools.displayImageOriginal(getActivity(), (ImageView) root.findViewById(R.id.image_4), R.drawable.image_14);
Tools.displayImageOriginal(getActivity(), (ImageView) root.findViewById(R.id.image_5), R.drawable.image_12);
Tools.displayImageOriginal(getActivity(), (ImageView) root.findViewById(R.id.image_6), R.drawable.image_2);
Tools.displayImageOriginal(getActivity(), (ImageView) root.findViewById(R.id.image_7), R.drawable.image_5);
return root;
}
}
package com.app.component.fragment;
导入android.content.Context;
导入android.graphics.Color;
导入android.os.Bundle;
导入android.support.v4.app.Fragment;
导入android.view.LayoutInflater;
导入android.view.view;
导入android.view.ViewGroup;
导入android.widget.ImageView;
导入com.material.components.R;
导入com.material.components.utils.Tools;
导入java.util.ArrayList;
导入java.util.List;
导入lecho.lib.hellocharts.model.Line;
导入lecho.lib.hellocharts.model.LineChartData;
导入lecho.lib.hellocharts.model.PointValue;
导入lecho.lib.hellocharts.view.LineChartView;
公共类FragmentTabsPerformance扩展了Fragment{
私人语境;
公共碎片选项卡性能(){
this.context=getActivity().getApplicationContext();
列表值=新的ArrayList();
添加(新的PointValue(0,2));
添加(新的PointValue(1,4));
添加(新的PointValue(2,3));
添加(新的PointValue(3,4));
//在大多数情况下,您可以以类似生成器模式的方式调用数据模型方法。
Line Line=新行(值).setColor(颜色.蓝色).setCubic(真);
列表行=新的ArrayList();
行。添加(行);
LineChartData数据=新的LineChartData();
数据。设置行(行);
LineChartView图表=新的LineChartView(this.getContext());
图表。setLineChartData(数据);
}
公共静态碎片选项卡性能newInstance(){
FragmentTabsPerformance fragment=新的FragmentTabsPerformance();
返回片段;
}
@凌驾
CreateView上的公共视图(布局、充气机、视图组容器、捆绑包保存状态){
视图根=充气机。充气(R.layout.fragment\u tabs\u性能,容器,false);
Tools.displayImageOriginal(getActivity(),(ImageView)root.findViewById(R.id.image\u 1),R.drawable.image\u 8);
Tools.displayImageOriginal(getActivity(),(ImageView)root.findViewById(R.id.image\u 2),R.drawable.image\u 9);
Tools.displayImageOriginal(getActivity(),(ImageView)root.findViewById(R.id.image\u 3),R.drawable.image\u 15);
Tools.displayImageOriginal(getActivity(),(ImageView)root.findViewById(R.id.image\u 4),R.drawable.image\u 14);
Tools.displayImageOriginal(getActivity(),(ImageView)root.findViewById(R.id.image_5),R.drawable.image_12);
Tools.displayImageOriginal(getActivity(),(ImageView)root.findViewById(R.id.image_6),R.drawable.image_2);
Tools.displayImageOriginal(getActivity(),(ImageView)root.findViewById(R.id.image\u 7),R.drawable.image\u 5);
返回根;
}
}
发生此异常的原因是,当片段未附加到活动时,您在构造方法中调用了getActivity()。您可以参考关于生命周期m的