我对这个错误很抱怨。我希望有人可以帮助我。 这是我的错误:
08-30 00:24:29.349: E/AndroidRuntime(2139): at android.view.ViewGroup.addView(ViewGroup.java:3318)
这是我的代码:
import android.os.Bundle;
import android.app.Activity;
import android.content.Context;
import android.support.v4.view.PagerAdapter;
import android.support.v4.view.ViewPager;
import android.view.LayoutInflater;
import android.view.Menu;
import android.view.View;
import android.view.ViewGroup;
import android.widget.LinearLayout;
public class MainActivity extends Activity {
ViewPager vPager;
private vpAdapter mAdapter;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
vPager=(ViewPager)findViewById(R.id.pager);
mAdapter = new vpAdapter();
vPager.setAdapter(mAdapter);
}
private class vpAdapter extends PagerAdapter{
@Override
public int getCount() {
// TODO Auto-generated method stub
return 4;
}
@Override
public boolean isViewFromObject(View view, Object object) {
// TODO Auto-generated method stub
return view==((LinearLayout)object);
}
@Override
public Object instantiateItem(ViewGroup container, int position) {
// TODO Auto-generated method stub
LayoutInflater inflater =(LayoutInflater)container.getContext()
.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
View v = null;
switch(position){
case 0:
inflater.inflate(R.layout.satu, null);
break;
case 1:
inflater.inflate(R.layout.dua, null);
break;
case 2:
inflater.inflate(R.layout.tiga, null);
break;
case 3:
inflater.inflate(R.layout.empat, null);
break;
}
((ViewPager)container).addView(v,0);
return true;
}
}
我尝试了很多方法但失败了。例如更改中断的位置并更改位置视图组。我忘了导入图书馆或其他东西?请帮助它的主人:) 如果有人能帮助我,我将非常感激。 谢谢之前:)
答案 0 :(得分:3)
视图为空。
你有这个
View v = null;
但我没有看到你在任何地方初始化视图到膨胀的布局。你只是放弃了布局。因此,你得到NullPointerException
。在您的切换案例中,初始化您的视图v并将其转换为视图
v = (View) inflater.inflate(R.layout.rowimage,null, false);
同时返回
return v; // and not return true;
答案 1 :(得分:0)
它返回空指针异常,因为这里“v”为空。将开关条件更改为以下,
switch(position){
case 0:
v= inflater.inflate(R.layout.satu, null);
break;
case 1:
v= inflater.inflate(R.layout.dua, null);
break;
case 2:
v=inflater.inflate(R.layout.tiga, null);
break;
case 3:
v=inflater.inflate(R.layout.empat, null);
break;
}
答案 2 :(得分:0)
试试这种方式
@Override
public Object instantiateItem(ViewGroup container, int position) {
// TODO Auto-generated method stub
LayoutInflater inflater =(LayoutInflater)container.getContext()
.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
View v = null;
switch(position){
case 0:
v=inflater.inflate(R.layout.satu, null);
break;
case 1:
v=inflater.inflate(R.layout.dua, null);
break;
case 2:
v=inflater.inflate(R.layout.tiga, null);
break;
case 3:
v=inflater.inflate(R.layout.empat, null);
break;
}
return v;
}
答案 3 :(得分:0)
您的视图为空 -
您正在膨胀XML Layout但未分配到视图中。
将视图分配到您的开关 -
喜欢 -
v=(View)inflater.inflate(R.layout.satu, null);
并返回视图而不是布尔值 -
return v;