0

TextView を LinearLayout に動的に追加しようとしていますが、エラーが発生し、修正方法がわかりません。

03-19 16:25:07.057: ERROR/AndroidRuntime(16910): FATAL EXCEPTION: main
    android.view.InflateException: Binary XML file line #3: Error inflating class <unknown>
    at android.view.LayoutInflater.createView(LayoutInflater.java:613)
    at com.android.internal.policy.impl.PhoneLayoutInflater.onCreateView(PhoneLayoutInflater.java:56)
    at android.view.LayoutInflater.onCreateView(LayoutInflater.java:660)
    at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:685)
    at android.view.LayoutInflater.inflate(LayoutInflater.java:466)
    at android.view.LayoutInflater.inflate(LayoutInflater.java:396)
    at android.view.LayoutInflater.inflate(LayoutInflater.java:352)
    at com.fincalc.financialcalculator.MainActivity.simulateDebtLifeSpan(MainActivity.java:215)
    at com.fincalc.financialcalculator.MainActivity.simulateDebtLifeSpan(MainActivity.java:220)
    at com.fincalc.financialcalculator.MainActivity.simulateDebtLifeSpan(MainActivity.java:220)
    at com.fincalc.financialcalculator.MainActivity.simulateDebtLifeSpan(MainActivity.java:220)
    at com.fincalc.financialcalculator.MainActivity.simulateDebtLifeSpan(MainActivity.java:220)
    at com.fincalc.financialcalculator.MainActivity.simulateDebtLifeSpan(MainActivity.java:220)
    at com.fincalc.financialcalculator.MainActivity.simulateDebtLifeSpan(MainActivity.java:220)
    at com.fincalc.financialcalculator.MainActivity.simulateDebtLifeSpan(MainActivity.java:220)
    at com.fincalc.financialcalculator.MainActivity.simulateDebtLifeSpan(MainActivity.java:220)
    at com.fincalc.financialcalculator.MainActivity.simulateDebtLifeSpan(MainActivity.java:220)
    at com.fincalc.financialcalculator.MainActivity.simulateDebtLifeSpan(MainActivity.java:220)
    at com.fincalc.financialcalculator.MainActivity.simulateDebtLifeSpan(MainActivity.java:220)
    at com.fincalc.financialcalculator.MainActivity.simulateDebtLifeSpan(MainActivity.java:220)
    at com.fincalc.financialcalculator.MainActivity.simulateDebtLifeSpan(MainActivity.java:220)
    at com.fincalc.financialcalculator.MainActivity.simulateDebtLifeSpan(MainActivity.java:220)
    at com.fincalc.financialcalculator.MainActivity.simulateDebtLifeSpan(MainActivity.java:220)
    at com.fincalc.financialcalculator.MainActivity.simulateDebtLifeSpan(MainActivity.java:220)
    at com.fincalc.financialcalculator.MainActivity.simulateDebtLifeSpan(MainActivity.java:220)
    at com.fincalc.financialcalculator.MainActivity.simulateDebtLifeSpan(MainActivity.java:220)
    at com.fincalc.financialcalculator.MainActivity.simulateDebtLifeSpan(MainActivity.java:220)
    at com.fincalc.financialcalculator.MainActivity.simulateDebtLifeSpan(MainActivity.java:220)
    at com.fincalc.financialcalculator.MainActivity.simulateDebtLifeSpan(MainActivity.java:220)
    at com.fincalc.financialcalculator.MainActivity.simulateDebtLifeSpan(MainActivity.java:220)
    at com.fincalc.financialcalculator.MainActivity.simulateDebtLifeSpan(MainActivity.java:220)
    at com.fincalc.financialcalculator.MainActivity.simulateDebtLifeSpan(MainActivity.java:220)
    at com.fincalc.financialcalculator.MainActivity.simulateDebtLifeSpan(MainActivity.java:220)
    at com.fincalc.financialcalculator.MainActivity.simulateDebtLifeSpan(MainActivity.java:220)
    at com.fincalc.financialcalculator.MainActivity.simulateDebtLifeSpan(MainActivity.java:220)
    at com.fincalc.financialcalculator.MainActivity.simulateDebtLifeSpan(MainActivity.java:220)
    at com.fincalc.financialcalculator.MainActivity.simulateDebtLifeSpan(MainActivity.java:220)
    at com.fincalc.financialcalculator.MainActivity.simulateDebtLifeSpan(MainActivity.java:220)
    at com.fincalc.financialcalculator.MainActivity.simulateDebtLifeSpan(MainActivity.java:220)
    at com.fincalc.financialcalculator.MainActivity.simulateDebtLifeSpan(MainActivity.java:220)
    at com.fincalc.financialcalculator.MainActivity.simulateDebtLifeSpan(MainActivity.java:220)
    at com.fincalc.financialcalculator.MainActivity.simulateDebtLifeSpan(MainActivity.java:220)
    at com.fincalc.financialcalculator.MainActivity.simulateDebtLifeSpan(MainActivity.java:220)
    at com.fincalc.financialcalculator.MainActivity.simulateDebtLifeSpan(MainActivity.java:220)

参照されている XML レイアウト ファイルは次のとおりです。

<?xml version="1.0" encoding="utf-8"?>

<TextView xmlns:android="http://schemas.android.com/apk/res/android"
      android:layout_width="match_parent"
      android:layout_height="match_parent" />

そして、この問題の私のコード:

 public void simulateDebtLifeSpan(CreditCard card){
    LinearLayout ll = (LinearLayout)getLayoutInflater().inflate(R.layout.simulatedminimumpayments,null);
    if (card.balance>0){
       -line 215- TextView sim = (TextView)getLayoutInflater().inflate(R.layout.paymentrow,null);
        double newBalance =  card.getBalance()-card.getMinimumPayment(card.getBalance());
        sim.setText("Starting Balance: " + card.getBalance() + " Minimum Payment: " + card.getMinimumPayment(actBalance) + " New Balance: " + newBalance);
         ll.addView(sim);
         card.setBalance(newBalance);
         simulateDebtLifeSpan(card);
        return;
    }else {
        setContentView(R.layout.simulatedminimumpayments);
     return;
    }
}

インフレータは私をかなり混乱させますが、テーブルの行を膨らませてテーブルレイアウトに追加する同様のコードがあります.

4

2 に答える 2

0

次のようなことを試してください:

LinearLayout layout1 = (LinearLayout) LayoutInflater.from(mCtx).inflate(R.layout.one_fifty_two_init, null);

内部クラス、またはコンテキストにアクセスできない他の場所 (onTouchListener) などにいる場合 (つまり、キーワード this を使用できない場合)、次のことも試すことができます。

LinearLayout layout1 = (LinearLayout) LayoutInflater.from(MyActivity.this).inflate(R.layout.one_fifty_two_init, null);

ああ、TextView を XML の線形レイアウトでラップしてみてください。

編集:

これを試して:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/wrapper_layout"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    >
<TextView
    ....your text view params
/>
</LinearLayout>

私の唯一の考えは、あなたのビューがインフレータバーフのレイアウトにラップされていないからかもしれません。

于 2013-03-19T20:50:42.783 に答える
0

これを試して

TextView sim = (TextView) View.inflate(this,R.layout.paymentrow,null);
于 2013-03-19T20:54:59.990 に答える