마스터Q&A 안드로이드는 안드로이드 개발자들의 질문과 답변을 위한 지식 커뮤니티 사이트입니다. 안드로이드펍에서 운영하고 있습니다. [사용법, 운영진]

탭바에 키보드를 이용한 포커스 달기.

0 추천
public class MainActivity extends FragmentActivity {

	private static final String menuTab1 = "aa";
	private static final String menuTab2 = "bb";
	private static final String menuTab3 = "cc";

	private static final String ARGUMENT_NAME = "name";

	FragmentTabHost mTabHost;

	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.activity_main);
		mTabHost = (FragmentTabHost) findViewById(android.R.id.tabhost);
		mTabHost.setup(this, getSupportFragmentManager(), R.id.tab_container);

		final Bundle args1 = new Bundle();
		args1.putString(ARGUMENT_NAME, menuTab1);
		mTabHost.addTab(mTabHost.newTabSpec(menuTab1).setIndicator(menuTab1), Aa.class, args1);

		
		final Bundle args2 = new Bundle();
		args2.putString(ARGUMENT_NAME, menuTab2);
		mTabHost.addTab(mTabHost.newTabSpec(menuTab2).setIndicator(menuTab2), Bb.class, args2);
		
		final Bundle args3 = new Bundle();
		args3.putString(ARGUMENT_NAME, menuTab3);
		mTabHost.addTab(mTabHost.newTabSpec(menuTab3).setIndicator(menuTab3), Cc.class, args3);
		
		}

	@Override
	protected void onDestroy() {
		super.onDestroy();
		mTabHost = null;
	}

}

위와 같은 3개의 탭을 가진 메인 액티비티를 만들었습니다.

탭선택시 각각 Aa, Bb, Cc 클래스를 연결해주며, 탭하단에 내용도 잘 출력됩니다.

 

현재 방향키(AVD DPAD)를 이용하여 좌우로 움직이면, 화면이 바로바로 바뀝니다.

다시말해, 방향키를 움직여 탭을 이동할때마다 아래 내용이 함께 바뀝니다.

 

제가 지금 하고 싶은 것은 '확인' 버튼을 눌렀을 때만 탭이 반응을 하는 것입니다.

aa탭에서 방향키를 오른쪽으로 두번 누르면, cc탭에 포커스가 잡히고(Aa화면유지) cc탭에서 확인을 누르면 화면이 Cc로 바뀌는 것입니다.

위의 소스에 추가적으로 도움을 주셨으면 합니다.

 

activity_main.xml

<?xml version="1.0" encoding="utf-8"?>
<android.support.v4.app.FragmentTabHost 
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@android:id/tabhost"
    android:layout_width="match_parent"
    android:layout_height="match_parent" >

    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:background="#0000ff"
        android:orientation="vertical" >

        <TabWidget
            android:id="@android:id/tabs"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:focusable="true" />

        <FrameLayout
            android:id="@android:id/tabcontent"
            android:layout_width="0dp"
            android:layout_height="0dp" />

        <FrameLayout
            android:id="@+id/tab_container"
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:layout_weight="1" />
    </LinearLayout>

</android.support.v4.app.FragmentTabHost>

 

Aa, Bb, Cc.java

public class Aa extends Fragment {
	public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
		View view = inflater.inflate(R.layout.menu1, container, false);

                ~~~~
	
		return view;
	}
}

 

 

도미노 (120 포인트) 님이 2013년 11월 7일 질문

1개의 답변

0 추천
코딩을 놓은지 2달째라 확실하지는 않지만...

방향키를 오른쪽으로 누르면 int 값 하나를 증가 시켜서 확인 버튼? 을 눌렀을때 어떤 페이지를 보여줘야 한다는 값을 가지고 확인 버튼을 눌렀을때 switch 문이나 if else 문을 이용하여 그 값일때 보여줄 페이지를 보여주면 되지 않을까요..?

소스만 봐서는 화면이 변경되는것인지 안에 텍스트만 변경이 되는것인지는 예흑이 힘듬니다만 제생각이 맞다면 어떤 경우라도 해결이 될것 같습니다(화면 전환이라던지 문자열 변경이라든지..)
카이래이언 (2,700 포인트) 님이 2013년 11월 7일 답변
...