2012-04-17 12 views
4

XMLで静的に定義されているときに、フラグメント内のTextViewエレメントを使用することができました。しかし、それらを動的に/プログラマチックに作成しようとすると、何も表示されません。私が持っている問題の簡単な例を作りました。フラグメントにTextViewオブジェクトを動的に追加する

これは動作する、私は画面が更新されて表示されます。

@Override 
    public View onCreateView(LayoutInflater inflater, ViewGroup container, 
      Bundle savedInstanceState) 
    { 
     View v = inflater.inflate(R.layout.hello_world, container, false); 
     TextView tv = (TextView)v.findViewById(R.id.text); 
     tv.setText("Fragment #" + mNum); 
     tv.setBackgroundDrawable(getResources().getDrawable(android.R.drawable.gallery_thumb)); 
     return v; 
    } 

これは機能しません。 diagtextvertical.xmlというXMLファイルは、次のとおりです。

<?xml version="1.0" encoding="utf-8"?> 
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:orientation="vertical" 
    > 
</LinearLayout> 

コードは次のとおりです。

@Override 
public View onCreateView(LayoutInflater inflater, ViewGroup container, 
    Bundle savedInstanceState) 
{ 
     //good View v = inflater.inflate(R.layout.diaglist, container, false); 
     View v = inflater.inflate(R.layout.diagverticaltext, container, false); 
     mycontainer = container; 

     LinearLayout l = (LinearLayout)inflater.inflate(R.layout.diagverticaltext, container, false); 
     TextView tv = new TextView(container.getContext()); 
     tv.setText("Testing..."); 
     l.addView(tv); 
     tv = new TextView(container.getContext()); 
     tv.setText("Testing1..."); 
     l.addView(tv); 
     tv = new TextView(container.getContext()); 
     tv.setText("Testing2..."); 
     l.addView(tv); 
     return v; 
} 

私はcontainer.getContext()の代わりにgetActivity()を使用しようとしましたが、運がありません。レイアウトを実際のビューインスタンスにマップする方法については、私が明確にしていないことがあります。これは、アクティビティでこれを行うこととは異なります。

私の質問には2番目の部分があります。私の実際の目標は、ポーリングされたデータに基づいてビューを非同期的に更新することです。私が持っている質問の1つは、自分のコールバックを呼び出すときViewGroupとインフレータに手を差し伸べる方法です。

+0

私は yladsr

答えて

2

私はアンドロイドの新機能ですが、あなたのonCreateViewにvの代わりにlを返すか、TextViewsをvに追加する必要があります。

関連する問題