1

getInflater() メソッドを呼び出すと StackOverflowError Exception が発生します。そのメソッドを呼び出して別のオブジェクトに渡して View arg3=inflater.inflate(R.layout.lastrow_layout, null) メソッドを呼び出そうとしました。では、なぜこの種のエラーが発生するのかどうすればそれを解決できますか?または、インフレータオブジェクトを渡さずに同じことを行う方法はありますか? エラーログです。

  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 オブジェクトは別のクラスで this として使用されます。

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

2 に答える 2

2

関数は自分自身を呼び出しています。これがスタック オーバーフローの原因です。

あなたはおそらく次のようなものが欲しい

public LayoutInflater getInflater() {       
    return (LayoutInflater)this.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
} 

this有効な はどこにありますかContext

于 2013-09-07T09:39:21.960 に答える
1
LayoutInflater mInflater;
View arg3 = mInflater.inflate(R.layout.lastrow_layout, null);

これを試して。それがうまくいくことを願っています。

于 2013-09-07T09:33:31.247 に答える