2017-12-24 12 views
-2

우선 무엇보다도 단편 사이의 차이점을 이해할 수 있습니다. 사용하는 것이 더 좋다고 말할 수는 없습니다.UI에서 조각을 만드는 방법은 무엇입니까?

나는 간단한 drawerview을 만들려고합니다. 사용자는 서랍 메뉴의 옵션에서 선택하고 기본 페이지가 변경됩니다. AppBar은 제목이 있어야하므로 모든 변경 사항에 적용되어야합니다.

UI는 .xml 형식으로 작성되었으며 mainActivity에서 Java 파일을 호출하는 방법을 알 수 없습니다. 기본 UI 형식 내에서 버튼 클릭으로 변경되는 약 4-5 개의 다른 페이지를 사용하고 싶습니다. 나는 조각 작업을 시도했다

안드로이드 스튜디오 개발자 섹션,하지만 행운을 형성한다. 불행하게도, 내가 UI에 대한 경험이 자바 FX 또는 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()); 

    ... 
} 

}

핸들 카릭 아래와 같은 레이아웃을 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); 
} 

이 하나의 기본이며, 자세한 예는