安卓,fragmentTabHost中,使用自定义的view后就出错了-问答-阿里云开发者社区-阿里云

开发者社区> 问答> 正文

安卓,fragmentTabHost中,使用自定义的view后就出错了

2016-03-20 11:49:58 2344 1

原本在tabspec里的setIndicator就使用简单的字符串,没事,已经完成了。

然后想试试这里使用自定义样式,就报了个nullpointerException

下面贴下代码:

package com.example.test_fragmenttaghost;

import android.os.Bundle;
 import android.view.*;
 import com.example.test_fragmenttaghost.Fragment1;
 import com.example.test_fragmenttaghost.Fragment2;
 import com.example.test_fragmenttaghost.Fragment3;
 import android.widget.*;
 import android.app.Activity;
 import android.view.Menu;
 import android.support.v4.app.*;
 import android.widget.TabHost.*;

public class MainActivity extends FragmentActivity {
 private FragmentTabHost tabhost;
 Class[] fragmentclass={Fragment1.class,Fragment2.class,Fragment3.class};
 String[] str={"标签1","标签2","标签3"};
 private LayoutInflater inflater;
 int[] pictureId={R.drawable.a1,R.drawable.a2,R.drawable.a3};
 @Override
 protected void onCreate(Bundle savedInstanceState) {
 super.onCreate(savedInstanceState);
 setContentView(R.layout.activity_main);
 inflater=LayoutInflater.from(this);
 tabhost=(FragmentTabHost)super.findViewById(R.id.fragmenttabhost);
 tabhost.setup(this,getSupportFragmentManager(),R.id.tabcontent);
 TabSpec tabspec;
 int i;
 for(i=0;i<3;i++)
 {
 tabspec=tabhost.newTabSpec("f"+i);
 tabspec.setIndicator(getItemView(i));
 tabhost.addTab(tabspec,fragmentclass[i],null);
 tabhost.getTabWidget().getChildAt(i);
 }
}


@Override
public boolean onCreateOptionsMenu(Menu menu) {
    // Inflate the menu; this adds items to the action bar if it is present.
    getMenuInflater().inflate(R.menu.main, menu);
    return true;
}

public View getItemView(int index)
{

    View v=inflater.inflate(R.layout.picture,null);
    ImageView img=(ImageView)super.findViewById(R.id.picture1);
    img.setImageResource(pictureId[index]);
    TextView tv=(TextView)super.findViewById(R.id.textview);
    tv.setText(str[index]);

    return v;
}


}

这里比原来的代码新增加的就getItemView那段,还有layoutInflater对象的声明和实例化,还有新增加了一个用于自定义样式的xml文件(即getItemView里的R.layout.picture),最多还有原来的setIndicator(str[i])改成了现在的setIndicator(getItemView(i));

错误应该源自这几个地方,但我怎么都想不出哪里null了,求指教。

取消 提交回答
全部回答(1)
  • 被纵养的懒猫
    2019-10-14 19:14:02

    这个是因为你在onCreatView()里面,view已经存在,并且有parent了,需要将parent的子view删除就可以了。 http://blog.csdn.net/renpengben/article/details/12615487

    答案来源于网络

    0 0
相关问答

5

回答

Spark 【问答合集】

社区小助手 2019-05-29 14:13:40 130133浏览量 回答数 5

323

回答

云伴侣数据导入问题汇总(Android系统)

os_admin 2011-07-26 17:52:15 63514浏览量 回答数 323

28

回答

钉钉开放平台“常见问题常见问题常见问题“重要请关注

竹梅 2015-12-03 00:39:14 96622浏览量 回答数 28

3

回答

Logstash采集文件名称以及自定义格式的日志文件采集

Snorlax 2019-06-18 11:51:28 116032浏览量 回答数 3

22

回答

爬虫数据管理【问答合集】

我是管理员 2018-08-10 16:37:41 148934浏览量 回答数 22

1

回答

出现这个问题求解决This XML file does not appear to have any

淘合肥 2017-04-08 21:07:00 100287浏览量 回答数 1

43

回答

【精品问答集锦】Python热门问题

小六码奴 2019-05-30 15:27:34 144279浏览量 回答数 43

8

回答

mail.aliyun.com邮箱android手机客户端设置方法

jack_yang 2013-04-24 09:01:34 124181浏览量 回答数 8

24

回答

【精品问答】python技术1000问(1)

问问小秘 2019-11-15 13:25:00 485840浏览量 回答数 24

19

回答

云数据库RDS MySQL版【问答合集】

我是管理员 2018-08-03 15:10:37 55508浏览量 回答数 19
+关注
2
文章
9426
问答
问答排行榜
最热
最新
相关电子书
更多
JS零基础入门教程(上册)
立即下载
性能优化方法论
立即下载
手把手学习日志服务SLS,云启实验室实战指南
立即下载