Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/image/5.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
Android 尝试使用settext函数时出现空指针异常_Android_Android Layout_Android Activity_Android Fragments - Fatal编程技术网

Android 尝试使用settext函数时出现空指针异常

Android 尝试使用settext函数时出现空指针异常,android,android-layout,android-activity,android-fragments,Android,Android Layout,Android Activity,Android Fragments,我有两个导航选项卡,每个导航选项卡包含一个列表视图。每个listview都由几个组件组成,包括我正在尝试编辑的textview 我试图在定义每个片段的类中为文本视图设置文本,但得到一个空指针异常 以下是一些代码摘录: 查看寻呼机 <android.support.v4.view.ViewPager xmlns:android="http://schemas.android.com/apk/res/android" android:id="@+id/titleTaskList" androi

我有两个导航选项卡,每个导航选项卡包含一个列表视图。每个listview都由几个组件组成,包括我正在尝试编辑的textview

我试图在定义每个片段的类中为文本视图设置文本,但得到一个空指针异常

以下是一些代码摘录:

查看寻呼机

<android.support.v4.view.ViewPager xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/titleTaskList"
android:layout_width="match_parent"
android:layout_height="match_parent">
</android.support.v4.view.ViewPager>
在这个类中,我定义了选项卡:

public class TaskListAndOptionsActivity extends FragmentActivity implements ActionBar.TabListener {
private ViewPager viewPager;
    private TabsPagerAdapter mAdapter;
    private static ActionBar actionBar;
    private static Context context; 

    // Tab titles
    private String[] tabs = { "Arabic", "English"};

@Override
protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_task_list_and_options);

        viewPager = (ViewPager) findViewById(R.id.titleTaskList);

        actionBar = getActionBar();

        getActionBar().setDisplayOptions(ActionBar.DISPLAY_SHOW_CUSTOM); 
        getActionBar().setCustomView(R.layout.actionbar);
        getActionBar().setDisplayShowHomeEnabled(true);

        mAdapter = new TabsPagerAdapter(getSupportFragmentManager());
        viewPager.setAdapter(mAdapter);

        actionBar.setHomeButtonEnabled(false);
        actionBar.setNavigationMode(ActionBar.NAVIGATION_MODE_TABS);        

        // Adding Tabs
        for (String tab_name : tabs) {
            actionBar.addTab(actionBar.newTab().setText(tab_name)
                .setTabListener(this));
        }

        /**
         * on swiping the viewpager make respective tab selected
         * */
        viewPager.setOnPageChangeListener(new ViewPager.OnPageChangeListener() {
        @Override
            public void onPageSelected(int position) {
                // on changing the page
                // make respected tab selected
                actionBar.setSelectedNavigationItem(position);
            }

             @Override
             public void onPageScrolled(int arg0, float arg1, int arg2) {
             }

            @Override
            public void onPageScrollStateChanged(int arg0) {
            }
         });
}

最后,在这个类中,我试图为每个片段设置这个类

public class ArabicFragment extends ListFragment {
public static ArrayList<String> taskListAr = new ArrayList<String>();
private static Context context;
private static LayoutInflater inflater=null;

@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
    Log.d("changing layout","arabic");
    View rootView = inflater.inflate(R.layout.fragment_tasklistar, container, false);  
    return rootView;
}

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        displayTaskList();
        ArrayAdapter<String> adapter = new ArrayAdapter<String>(getActivity(), R.layout.list_itemar,R.id.title, taskListAr);
        setListAdapter(adapter);
}


    TextView taskDetails = (TextView)getView().findViewById(R.id.taskdetails);
    taskDetails.setText("trial");

如果这不是调用settext的正确位置,那么应该在哪里调用它?

您必须使用onCreateView方法编写

创建一个方法并使用View作为参数,并使用它进行任何类型的初始化。。例如:

private void initialze(View mView){
TextView taskDetails = (TextView)mView.findViewById(R.id.taskdetails);
taskDetails.setText("trial");
} 
并使用onCreateView中的方法,如


它非常简单,而且遵循android编程标准。

将你的.setText。。。。在您的onCreateView中。。。。。并尝试使用TextView taskDetails=TextViewrootView.findViewByIdR.id.taskDetails;您可以使用getSupportActionBar.settExt编辑文本;问题是fragment_tasklistar只包含listview定义,但是listview中的项的初始化在另一个布局xml中,如上所示,这是导致错误的原因吗?您必须实现适配器才能将数据加载到listview中。非常感谢!我没有使用你提供的链接,但是你确实让我走上了正确的道路。我使用了这个链接:我开发了一个小例子,效果非常好!在原生Android中,事情可能会变得有点复杂!从PhoneGap切换…@Farah-hmm。。。祝未来的节目好运-您的代码虽然整洁,但仍然会导致相同的问题,fragment_tasklistar只包含listview定义,但是listview中的项的初始化在另一个布局xml中,如上所示,这是导致空指针异常的原因吗?是否要使用此片段中textview所在的布局?或者两个布局都在一个片段中?首先明确你的要求..不,我不希望它们都在一个布局中,那无论如何都不行。我想要的是设置listfragment classi中的文本,我也建议与CapDroid所说的相同。使用您自己的自定义适配器类,并通过getView方法将数据放入文本中。谢谢,我确实使用了自定义适配器,这似乎是唯一的解决方法。
public class TaskListAndOptionsActivity extends FragmentActivity implements ActionBar.TabListener {
private ViewPager viewPager;
    private TabsPagerAdapter mAdapter;
    private static ActionBar actionBar;
    private static Context context; 

    // Tab titles
    private String[] tabs = { "Arabic", "English"};

@Override
protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_task_list_and_options);

        viewPager = (ViewPager) findViewById(R.id.titleTaskList);

        actionBar = getActionBar();

        getActionBar().setDisplayOptions(ActionBar.DISPLAY_SHOW_CUSTOM); 
        getActionBar().setCustomView(R.layout.actionbar);
        getActionBar().setDisplayShowHomeEnabled(true);

        mAdapter = new TabsPagerAdapter(getSupportFragmentManager());
        viewPager.setAdapter(mAdapter);

        actionBar.setHomeButtonEnabled(false);
        actionBar.setNavigationMode(ActionBar.NAVIGATION_MODE_TABS);        

        // Adding Tabs
        for (String tab_name : tabs) {
            actionBar.addTab(actionBar.newTab().setText(tab_name)
                .setTabListener(this));
        }

        /**
         * on swiping the viewpager make respective tab selected
         * */
        viewPager.setOnPageChangeListener(new ViewPager.OnPageChangeListener() {
        @Override
            public void onPageSelected(int position) {
                // on changing the page
                // make respected tab selected
                actionBar.setSelectedNavigationItem(position);
            }

             @Override
             public void onPageScrolled(int arg0, float arg1, int arg2) {
             }

            @Override
            public void onPageScrollStateChanged(int arg0) {
            }
         });
}
public class ArabicFragment extends ListFragment {
public static ArrayList<String> taskListAr = new ArrayList<String>();
private static Context context;
private static LayoutInflater inflater=null;

@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
    Log.d("changing layout","arabic");
    View rootView = inflater.inflate(R.layout.fragment_tasklistar, container, false);  
    return rootView;
}

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        displayTaskList();
        ArrayAdapter<String> adapter = new ArrayAdapter<String>(getActivity(), R.layout.list_itemar,R.id.title, taskListAr);
        setListAdapter(adapter);
}


    TextView taskDetails = (TextView)getView().findViewById(R.id.taskdetails);
    taskDetails.setText("trial");
@Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
        Log.d("changing layout","arabic");
        View rootView = inflater.inflate(R.layout.fragment_tasklistar, container, false);
        TextView taskDetails = (TextView)rootView.findViewById(R.id.taskdetails);
        taskDetails.setText("trial");
        return rootView;
    }
private void initialze(View mView){
TextView taskDetails = (TextView)mView.findViewById(R.id.taskdetails);
taskDetails.setText("trial");
} 
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle    savedInstanceState) {
Log.d("changing layout","arabic");
View rootView = inflater.inflate(R.layout.fragment_tasklistar, container, false);  
initialze(rootView );
return rootView;
}