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

자바,안드로이드 개발 초보(비전공자)입니다, 소스정리에 대해 질문드립니다.

0 추천

아직,자바 안드로이드 기초부터 공부하고있는 비전공자 학생입니다.

공부를 하면서 많이 해보고싶어서 인터넷에서 이것저것 보면서 따라하면서 실행해보면서 점점 더 큰 흥미를 느끼고 있습니다. 기존에 있는 어플들을 대충 흉내만 내면서 따라하면서 연습을 하고있습니다.  기존에 있던소스에 하나를 추가하고 또하나를 추가하고 하다보니 소스가 엉망진창이 되는느낌입니다, 그래서 소스를 정리해보고 싶은데 어떻게 해야될지 몰라 아래와 같은 tabhost소스를 저렇게 말고 따로 정리하는 방법이 있을지 여쭤보고자 이렇게 문의드립니다.

public class MainActivity extends Activity {
    private int select =0;
    private String str="0";
    private int A=1,B=2;
    private ListView mListView =null;
    private ListViewAdapter mAdapter = null;

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

        mListView = (ListView) findViewById(R.id.listView);
        mAdapter = new ListViewAdapter(this);
        mListView.setAdapter(mAdapter);

        mAdapter.addItem(getResources().getDrawable(R.drawable.ring_bob),"A-1","Type=A",A);
        mAdapter.addItem(getResources().getDrawable(R.drawable.ring_che),"B-1","Type=B",B);
        mAdapter.addItem(getResources().getDrawable(R.drawable.ring_bucks),"A-2","Type=A",A);
        mAdapter.addItem(getResources().getDrawable(R.drawable.ring_daku),"B-2","Type=B",B);
        mAdapter.addItem(getResources().getDrawable(R.drawable.ring_gura),"A-3","Type=A",A);
        mAdapter.addItem(getResources().getDrawable(R.drawable.ring_moi),"B-3","Type=A",B);
        mAdapter.addItem(getResources().getDrawable(R.drawable.ring_nikko),"A-4","Type=A",A);
        mAdapter.addItem(getResources().getDrawable(R.drawable.ring_sam),"B-4","Type=A",B);

        //TAB HOST 설정
        TabHost tab =(TabHost) findViewById(R.id.tabHost);
        tab.setup();
        //첫번째 TAB
        TabHost.TabSpec spec1 = tab.newTabSpec("TAB 1");
        spec1.setIndicator("첫번째");
        spec1.setContent(R.id.layout1);
        tab.addTab(spec1);
        //두번째 TAB
        TabHost.TabSpec spec2 = tab.newTabSpec("TAB 2");
        spec2.setIndicator("두번째");
        spec2.setContent(R.id.layout2);
        tab.addTab(spec2);

제가 봐도 정말 지저분한소스이지만, 혹시나 하는 마음에 이렇게 도움을 청해봅니다. 감사합니다.

익명사용자 님이 2016년 8월 29일 질문
새로 배우시는 거면 왜 굳이 TabHost를 쓰시나요. Android support library를 이용하셔서 material design으로 작업하시는게 더 나을 것 같습니다.

그리고 리팩토링을 하는데 여러가지 방법이 있겠지만 아래처럼 탭을 생성하는 메소드를 만들어서 그걸 호출하셔도 될 것 같습니다.
private TabHost tab;

private void addTab(String title, String indicator, int layoutId) {
        TabHost.TabSpec spec1 = tab.newTabSpec(title);
        spec1.setIndicator(indicator);
        spec1.setContent(layoutId);
        tab.addTab(spec1);
}

1개의 답변

0 추천
drawble이나 TAB 1, 첫번째 같은 부분을 리소스로 빼고 loop를 돌릴 순 있지만 저 정도는 그냥 메소드 하나에 몰어넣어도 괜찮습니다.
쎄미 (162,410 포인트) 님이 2016년 8월 29일 답변
...