2017-12-24 14 views
-2

まず第一に、何とかフラグメントアクティビティの違いは何であるか分かりますが、私はおそらく何が良いと言えるでしょうか。UIでフラグメントを作成する方法は?

単純な引き出しビューを作成したいと思います。ユーザーは引き出しメニューのオプションから選択でき、メインページが変更されます。 AppBarは、すべての変更点に存在する必要があります。

UIは.xml形式で書かれており、mainActivityから呼び出されるJavaファイルでそのUIを使用する方法を理解できません。私は、メインのUI形式の中で、ボタンのクリックで変化する約4-5の異なるページを使いたいと思っています。

私は断片形式のアンドロイドスタジオ開発者のセクションで作業しようとしましたが、運はありません。残念ながら、私はUIの経験があるJavaFXまたはQtと同じではありません。また、UIのアンドロイドを理解するために私が従わなければならないロジックや、このような問題を解決する方法を誰かが説明できれば、私はそれを感謝します。

+0

「何を使用することをお勧めします」hereを見つけることができますか? FYIアクティビティはコンポーネントであり、フラグメントはUIの一部にすぎません。アクティビティのない断片はありません。 – ADM

答えて

0

活性フラグメント保持することができるアンドロイド成分である(ないマニフェストに、コンパイル時に宣言される必要がある活動のように、実行時に作成および破棄することができるアプリケーションのモジュラー・パーツを、。)

注:フラグメントは親のアクティビティなしでは存在できません。

だからあなたの要件のために、あなたはAppcompatActivityを拡張し、断片のような他の除去部を保持することができますMainActivity.javaを持つことができます。

作成方法は次のとおりです。

activity_main.xml

<android.support.v4.widget.DrawerLayout 
xmlns:android="http://schemas.android.com/apk/res/android" 
android:id="@+id/drawer_layout" 
android:layout_width="match_parent" 
android:layout_height="match_parent"> 
<!-- The main content view --> 
<FrameLayout 
    android:id="@+id/content_frame" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" /> 
<!-- The navigation drawer --> 
<android.support.design.widget.NavigationView 
    android:id="@+id/navigation" 
    android:layout_width="wrap_content" 
    android:layout_height="match_parent" 
    android:layout_gravity="start" 
    app:menu="@menu/my_navigation_items" /> 

とあなたのMainActivity.java

public class MainActivity extends Activity { 
private String[] mPlanetTitles; 
private DrawerLayout mDrawerLayout; 
private ListView mDrawerList; 
... 

@Override 
public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_main); 

    mPlanetTitles = getResources().getStringArray(R.array.planets_array); 
    mDrawerLayout = (DrawerLayout) findViewById(R.id.drawer_layout); 
    mDrawerList = (ListView) findViewById(R.id.left_drawer); 

    // Set the adapter for the list view 
    mDrawerList.setAdapter(new ArrayAdapter<String>(this, 
      R.layout.drawer_list_item, mPlanetTitles)); 
    // Set the list's click listener 
    mDrawerList.setOnItemClickListener(new DrawerItemClickListener()); 

    ... 
} 

}

ハンドルclicクリックで以下のようなレイアウトを作りますk個のイベントが必要なフラグメントを置き換えるために使用されます。

private class DrawerItemClickListener implements ListView.OnItemClickListener { 
    @Override 
    public void onItemClick(AdapterView<?> parent, View view, int position, long id) { 
     selectItem(position); 
    } 
} 

/** Swaps fragments in the main content view */ 
private void selectItem(int position) { 
    // Create a new fragment and specify the planet to show based on position 
    Fragment fragment = new PlanetFragment(); 
    Bundle args = new Bundle(); 
    args.putInt(PlanetFragment.ARG_PLANET_NUMBER, position); 
    fragment.setArguments(args); 

    // Insert the fragment by replacing any existing fragment 
    FragmentManager fragmentManager = getFragmentManager(); 
    fragmentManager.beginTransaction() 
        .replace(R.id.content_frame, fragment) 
        .commit(); 

    // Highlight the selected item, update the title, and close the drawer 
    mDrawerList.setItemChecked(position, true); 
    setTitle(mPlanetTitles[position]); 
    mDrawerLayout.closeDrawer(mDrawerList); 
} 

@Override 
public void setTitle(CharSequence title) { 
    mTitle = title; 
    getActionBar().setTitle(mTitle); 
} 

これは基本的で、詳細な例は、

関連する問題