StackOverflowError在android中调用getInflater()时出现异常

时间:2013-09-07 08:57:25

标签: android

调用getInflater()方法时得到StackOverflowError异常。我试图调用该方法并将其传递给另一个对象来调用View arg3 = inflater.inflate(R.layout.lastrow_layout,null)方法。所以为什么这种类型错误发生了,我该如何解决呢?或者有没有办法在没有传递inflater对象的情况下做同样的事情? 这是错误日志。

  GC_FOR_ALLOC freed 88K, 9% free 2645K/2884K, paused 73ms, total 89ms
  threadid=1: stack overflow on call to Lcom/example/ikmantest2/MainActivity;.getInf later:L                                                                                          method requires 8+20+4=32 bytes, fp is 0x4364f318 (24 left)                                                                                             expanding stack end (0x4364f300 to 0x4364f000)                                                                                      Shrank stack (to 0x4364f300, curFrame is 0x43654ec4)                                                                                      Shutting down VM                                                                                              threadid=1: thread exiting with uncaught exception (group=0x40a71930)                                                                              GC_CONCURRENT freed 12K, 5% free 3146K/3304K, paused 77ms+79ms, total 249ms
 09-07 08:40:57.719: D/dalvikvm(1155): WAIT_FOR_CONCURRENT_GC blocked 13ms         
  FATAL EXCEPTION: main
  java.lang.StackOverflowError         atcom. example. ikmantest2. MainActivity.getInflater(MainActivity.java:253)

这是代码给出错误。(在Activity_Main.java中)

       public LayoutInflater getInflater() {        
             return getInflater();
       } 

这个Inflater对象在另一个类中使用;

           View arg3=inflater.inflate(R.layout.lastrow_layout, null)               

2 个答案:

答案 0 :(得分:2)

该函数正在调用自身,这就是堆栈溢出的原因。

你可能想要像

这样的东西
public LayoutInflater getInflater() {       
    return (LayoutInflater)this.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
} 

this是有效的Context

答案 1 :(得分:1)

LayoutInflater mInflater;
View arg3 = mInflater.inflate(R.layout.lastrow_layout, null);

试试这个。希望它能起作用。