0

我对这个错误感到很困惑。我希望有人可以帮助我。这是我的错误:

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;        
}

}

我尝试了很多方法,但都失败了。比如改变break的位置和改变position view group。我忘了导入库还是什么?请在这里帮助它的主人:) 如果有人能帮助我,我将不胜感激。谢谢之前:)

4

4 回答 4

3

视图为空。

你有这个

   View v = null;

但是我看不到您在任何地方将视图初始化为膨胀的布局。你只膨胀布局。因此你得到NullPointerException. 在您的 switch 案例中初始化您的视图 v 并将其转换为视图

   v = (View) inflater.inflate(R.layout.rowimage,null, false);

也返回

   return v; // and not return true;
于 2013-08-30T05:52:25.567 回答
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;
        }
于 2013-08-30T05:53:08.033 回答
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;        
}
于 2013-08-30T05:56:22.723 回答
0

你的观点是空的-

您正在膨胀 XML 布局,但没有分配给视图。

将视图分配给您的开关-

喜欢 -

 v=(View)inflater.inflate(R.layout.satu, null);

并返回视图而不是布尔值-

 return v;
于 2013-08-30T05:56:32.080 回答