2017-03-07 5 views
-1

fragmentTransation.add(...)でlistfragmentを追加しようとしましたが、できません。エラーです。通常のフラグメントのようなリストフラグメントを追加したいのですが可能でしょうか?あなたはそのためのgetFragmentManager()を使用することができますSupportFragmentMangerandroid.app.ListFragmentを使用することはできませんAndroid:トランザクションにリストフラグメントを追加する

public class FragmentList extends ListFragment 
{ 
public static FragmentList createFragment() 
{ 
    FragmentList fragmentList = new FragmentList(); 
    return fragmentList; 
} 

@Override 
public void onCreate(Bundle bundle) 
{ 
    super.onCreate(bundle); 
    ListView listView = getListView(); 
    String[] stringa = {"A","B","C"}; 
    ArrayAdapter<String> arrayAdapter = new ArrayAdapter<String>(getActivity(),android.R.layout.simple_list_item_1,stringa); 
    listView.setAdapter(arrayAdapter); 

} 

@Override 
public View onCreateView (LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) 
{ 
    super.onCreateView(inflater,container,savedInstanceState); 
    View rootView = inflater.inflate(R.layout.fragment, container, false); 
    return rootView; 
} 
} 
+0

エラーをしてください投稿! – ApolloSoftware

+0

@ApolloSoftware fragmentTransaction.add(R.id.relativeLayout、fragmentList)の下に赤い線があります。 – Curio

+0

public class MainActivityを拡張できますか?AppCompatActivity、FragmentActivityを拡張しますか? – ApolloSoftware

答えて

4

1):

public class MainActivity extends AppCompatActivity { 

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_main); 
    FragmentList fragmentList = FragmentList.createFragment(); 
    FragmentManager fragmentManager = getSupportFragmentManager(); 
    FragmentTransaction fragmentTransaction = fragmentManager.beginTransaction(); 
    fragmentTransaction.add(R.id.relativeLayout,fragmentList); //WRONG 
    fragmentTransaction.commit(); 
} 

はここに私のlistfragmentクラスのコードです:

は、ここに私の活動のメインのコードです。

基本的にはimportステートメントを確認してください。

それとも、代わりにandroid.support.v4.app.Fragmentを拡張し<ListView>を使用して独自のレイアウトを定義する(すでにやっているような)

それとも、

2かかわらず、さらに重要なandroid.support.v4.app.ListFragment


を使用することができて)getListView()はまだ表示されていないのでonCreateから呼び出すことはできません。

あなただけ必要onCreateView

public class FragmentList extends ListFragment { 

    @Override 
    public View onCreateView (LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) 
    { 
     super.onCreateView(inflater,container,savedInstanceState); 
     View rootView = inflater.inflate(R.layout.fragment, container, false); 
     String[] stringa = {"A","B","C"}; 

     ListView listView = (ListView) rootView.findViewById(android.R.id.list); 
     ArrayAdapter<String> arrayAdapter = new ArrayAdapter<String>(getActivity(),android.R.layout.simple_list_item_1,stringa); 
     listView.setAdapter(arrayAdapter); 

     return rootView; 
    } 
} 

プラス、

getFragmentManager() // Change accordingly 
    .beginTransaction() 
    .add(R.id.relativeLayout,new FragmentList()) 
    .commit(); 
+0

getFragmentManager()はうまく動作するはずです。 – ApolloSoftware

+0

はい、 'ListFragment'となります –

+1

サポート[' ListFragment'](https://developer.android.com/reference/android/support/v4/app/ListFragment.html)、btwがあります。 –

関連する問題