2017-12-05 23 views
-3

私の活動ではonClickメソッドに問題があります。私はonClickメソッドでlayoutInflaterを使用し、ボタンをクリックするとレイアウトを別のレイアウトに変更します。これは問題ありません。しかし、私はonClickに自分の方法を持っています。最初のクリックでは機能しません。 2回目のクリックでのみ機能します。ボタンonClickメソッドは、2回目のクリックでのみ動作します

@Override 
public void onClick(View v) { 
    getTextA(); 
    mFrameLayout.removeAllViews(); 
    LayoutInflater layoutInflater = (LayoutInflater) this.getSystemService(Context.LAYOUT_INFLATER_SERVICE); 
    v = layoutInflater.inflate(R.layout.soru, null); 
    mFrameLayout.addView(v); 
    Button bt = new Button(this); 
    bt.setLayoutParams(new LinearLayout.LayoutParams(LinearLayout.LayoutParams.MATCH_PARENT, LinearLayout.LayoutParams.WRAP_CONTENT)); 
    mFrameLayout.addView(bt); 
    bt.setText(textA); 
} 

textAが、2番目のクリックで、getTextA()方法から来ています。どうして ?誰でも私を助けることができますか?

+1

()ですか? –

+0

私はまだマルチスレッドを理解していない別の人だと思っています...そしてgetTextAはいくつかの非同期呼び出しを開始します... bazillion同様の質問と同じです。 – Selvin

+0

これは単なる推測です。 OPは彼が彼の得点からアンドロイドデベロッパーにとって初めてのようだ。最初の呼び出し(別の前提)でまだ設定されていないため、btボタンからテキストを取得している場合はgetTextA()は機能しません。 –

答えて

-1

フラグメントを使用して、別のレイアウトを表示します。現在の方法は、が間違っているです。

+0

いいえ、それは間違いではありません。フラグメントはGoogleによって推奨されていますが、それが唯一の方法ではありません。実際、デベロッパのかなり大きな部分は、フラグメントの代わりにカスタムビューを使用しています。 –

+0

@DeividasStriogaメソッドが正しくないカスタムビューの場合でも。 imho – goriyasno

+0

真の美しいコードではなく、xmlで定義できますが、ビューを動的に作成して追加する方法です。ところで、アクティビティでは、レイアウトインフレータを手動で取得する代わりに、getLayoutInflater()を使用することができます。 –

-1

私はこの問題を解決しました。問題はonClickメソッド内のlayoutinflaterにあります。だから私は新しいメソッド呼び出しgetQuestion()にlayoutinflaterコードを置く。 getTextA()メソッドでgetQuestion()メソッドを呼び出します。その解決。

私はlayoutinflaterを使用していますが、このメソッドはまだフラグメントにあります。新しいフラグメントを使用すると、Nestedfragmentsが発生します。あなたの答えをありがとう。ここで

はあなたのgetTextAには何がコード

public void onClick(View v) { 
    getTextA(); 
}` 

public void getTextA(){ 
    //Method details. 
    getQuestion(); 
} 

public void getQuestion(){ 
mFrameLayout.removeAllViews(); 
LayoutInflater layoutInflater = (LayoutInflater) this.getSystemService(Context.LAYOUT_INFLATER_SERVICE); 
View v = layoutInflater.inflate(R.layout.soru, null); 
mFrameLayout.addView(v); 
Button bt = new Button(this); 
bt.setLayoutParams(new LinearLayout.LayoutParams(LinearLayout.LayoutParams.MATCH_PARENT, LinearLayout.LayoutParams.WRAP_CONTENT)); 
mFrameLayout.addView(bt); 
bt.setText(textA); 
} 
+0

*問題はonClickメソッド内のlayoutinflaterにあります* Million Monkeys Programming Styleのように見える...今は古いgetTextAを呼び出していません。本当の問題は、あなたがそれを使う前にあなたが 'textA'値を得ていないということです – Selvin

関連する問題