Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/209.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ssis/2.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活动已转换为片段_Android_Android Fragments_Android Activity - Fatal编程技术网

Android活动已转换为片段

Android活动已转换为片段,android,android-fragments,android-activity,Android,Android Fragments,Android Activity,我有一个有效的应用程序。现在我想修改它,以便使用ViewPager。我的意思是,我已经定义了一个新的活动,我想使用查看页面在活动之间滑动。为了做到这一点,我将原始活动转换为一个片段。这是原始(简化)代码 公共类ListViewImagesActivity扩展活动{ @凌驾 创建时的公共void(Bundle savedInstanceState){ super.onCreate(savedInstanceState); setContentView(R.layout.main); ArrayLi

我有一个有效的应用程序。现在我想修改它,以便使用ViewPager。我的意思是,我已经定义了一个新的活动,我想使用查看页面在活动之间滑动。为了做到这一点,我将原始活动转换为一个片段。这是原始(简化)代码

公共类ListViewImagesActivity扩展活动{
@凌驾
创建时的公共void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
ArrayList image_details=populateList();
最终ListView lv1=(ListView)findViewById(R.id.listV_main);
final ItemListBaseAdapter ilba=新的ItemListBaseAdapter(此,图像_详细信息);
lv1.设置适配器(ilba);
lv1.setOnItemClickListener(新的OnItemClickListener(){
@凌驾
公共视图单击(适配器视图a、视图v、内部位置、长id){
对象o=lv1.getItemAtPosition(位置);
鱼对象详细信息=(鱼)o;
意向意向=新意向(ListViewImagesActivity.this,DisplayFishDetailActivity.class);
星触觉(意向);
}
});
}
}

我用以下方式修改了代码

import android.support.v4.app.Fragment;
public class ListViewImagesActivity extends Fragment {

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

@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstancesState) {
    return inflater.inflate(R.layout.activity_display_fish_detail, container, false);
}

@Override
public void onStart() {
    super.onStart();

    ArrayList<Fish> image_details = populateList();

    final ListView lv1 = (ListView) getView().findViewById(R.id.pager);
    final ItemListBaseAdapter ilba = new ItemListBaseAdapter(getActivity(), image_details);
    lv1.setAdapter(ilba);

    lv1.setOnItemClickListener(new OnItemClickListener() {
        @Override
        public void onItemClick(AdapterView<?> a, View v, int position, long id) {
            Object o = lv1.getItemAtPosition(position);
            Fish obj_itemDetails = (Fish) o;

            Intent intent = new Intent(getActivity(), DisplayFishDetailActivity.class);

            startActivity(intent);
        }
    });
}
导入android.support.v4.app.Fragment;
公共类ListViewImagesActivity扩展了片段{
@凌驾
创建时的公共void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
}
@凌驾
创建视图上的公共视图(布局、充气机、视图组容器、捆绑包保存状态){
返回充气机。充气(R.布局.活动\显示\鱼\详细信息,容器,错误);
}
@凌驾
public void onStart(){
super.onStart();
ArrayList image_details=populateList();
最终ListView lv1=(ListView)getView().findViewById(R.id.pager);
final ItemListBaseAdapter ilba=新的ItemListBaseAdapter(getActivity(),图像_详细信息);
lv1.设置适配器(ilba);
lv1.setOnItemClickListener(新的OnItemClickListener(){
@凌驾
公共视图单击(适配器视图a、视图v、内部位置、长id){
对象o=lv1.getItemAtPosition(位置);
鱼对象详细信息=(鱼)o;
Intent Intent=new Intent(getActivity(),DisplayFishDetailActivity.class);
星触觉(意向);
}
});
}
现在,适配器ItemListBaseAdapter使用getActivity()接收上下文,而不是使用this(事实上,我不确定这是否正确)。运行应用程序时,我在lv1.setAdapter(ilba)处遇到空指针异常

有什么提示吗


提前感谢

是否为ListView的id设置了
R.id.pager
?否,它是main.xml中的id,但将其更改为ListView的id结果是相同的,即,请删除项目,再次检查
R.layout.activity\u display\u fish\u detail
是否包含具有正确id的
ListView
,并且您正在访问在执行
findViewById()
时使用相同的id,并附加完整的堆栈跟踪。问题在于。错误的id。清理并更改为正确的id是解决方案。谢谢A--C!
import android.support.v4.app.Fragment;
public class ListViewImagesActivity extends Fragment {

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

@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstancesState) {
    return inflater.inflate(R.layout.activity_display_fish_detail, container, false);
}

@Override
public void onStart() {
    super.onStart();

    ArrayList<Fish> image_details = populateList();

    final ListView lv1 = (ListView) getView().findViewById(R.id.pager);
    final ItemListBaseAdapter ilba = new ItemListBaseAdapter(getActivity(), image_details);
    lv1.setAdapter(ilba);

    lv1.setOnItemClickListener(new OnItemClickListener() {
        @Override
        public void onItemClick(AdapterView<?> a, View v, int position, long id) {
            Object o = lv1.getItemAtPosition(position);
            Fish obj_itemDetails = (Fish) o;

            Intent intent = new Intent(getActivity(), DisplayFishDetailActivity.class);

            startActivity(intent);
        }
    });
}