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

탭레이아웃안에 그리드뷰를 추가하려고합니다.

0 추천
//gallery클래스

package com.example.profile;

import android.app.Activity;
import android.content.Context;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.view.ViewGroup;
import android.widget.BaseAdapter;
import android.widget.GridView;
import android.widget.ImageView;

import com.szugyi.circlemenu.R;

public class gallery extends Activity {
	GridView gridview;

	protected void onCreate(Bundle savedInstanceState) {

		super.onCreate(savedInstanceState);
		setContentView(R.layout.gallery);
		gridview = (GridView) findViewById(R.id.gridview);
		gridview.setAdapter(new ImageAdapter(this));

	}

}

class ImageAdapter extends BaseAdapter {
	// 참조할 이미지 목록tab

	private Integer[] image = { R.drawable.ga1, R.drawable.ga2, R.drawable.ga3,
			R.drawable.ga4, R.drawable.ga5, R.drawable.ga6, R.drawable.ga7,
			R.drawable.ga8, R.drawable.ga9 };

	Context mcontext;// 상위클래스로부터 context를 받음= 이유:이미지뷰를 상위로 보내야하기에.

	// BaseAdapter 4개의 메소드를 자동으로 오버라이딩 해야함
	// GireviewActivity클래스에 Imageview를 넘겨줘야 하기에 Context를 받아옴
	public ImageAdapter(Context context) {
		mcontext = context;
	}

	@Override
	public int getCount() {
		// TODO Auto-generated method stub
		return image.length;// 현제 이미지의 총개수를 리턴
	}

	@Override
	public Object getItem(int arg0) {
		// TODO Auto-generated method stub
		return null;
	}

	@Override
	public long getItemId(int arg0) {
		// TODO Auto-generated method stub
		return 0;
	}

	// 사용자가 화면을 드레그할때마다 자동으로 호출되는 콜백 메소드 입니다.
	@Override
	public View getView(int arg0, View arg1, ViewGroup arg2) {
		// 이미지를 화면에 보여줄 imageview 메소드를 선언
		ImageView imageview = new ImageView(mcontext);
		// 이미지뷰의 크기를 지정
		imageview.setLayoutParams(new GridView.LayoutParams(85, 85));
		// 이미지가 크더라도 고정시키시오 = 넓이와 높이를 고정
		imageview.setScaleType(ImageView.ScaleType.FIT_XY);
		// 이미지 부착
		imageview.setImageResource(image[arg0]);
		System.out.println(image[arg0]); // 이미지를 한번에 로딩해서 보관하는게 아니라 사용자가 화면을 드레그
											// 하는순가 나타
		// getView(int arg0, View arg1, ViewGroup arg2) 가 실행되는 겁니다.
		return imageview;
	}

}





//mainactivity클래스

package com.example.profile;
import com.szugyi.circlemenu.R;
import com.szugyi.circlemenu.*;
import android.app.TabActivity;
import android.content.Intent;
import android.content.res.Resources;
import android.os.Bundle;
import android.widget.TabHost;
@SuppressWarnings("deprecation")
public class MainActivity extends TabActivity {
	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.main);
		com.szugyi.circlemenu.MainActivity ActivityA = (com.szugyi.circlemenu.MainActivity) com.szugyi.circlemenu.MainActivity.A;
		ActivityA.finish();
		Resources res = this.getResources();
		TabHost tabhost = this.getTabHost();
		TabHost.TabSpec spec;
		Intent intent = null;
		intent = new Intent().setClass(this, pro.class);
		spec = tabhost.newTabSpec("pro")
				.setIndicator("소개", res.getDrawable(R.drawable.my))
				.setContent(intent);
		tabhost.addTab(spec);
		intent = new Intent().setClass(this, gallery.class);
		spec = tabhost.newTabSpec("gallery")
				.setIndicator("갤러리", res.getDrawable(R.drawable.gallery))
				.setContent(intent);
		tabhost.addTab(spec);
		intent = new Intent().setClass(this, interest.class);
		spec = tabhost.newTabSpec("interest")
				.setIndicator("알바", res.getDrawable(R.drawable.alba))
				.setContent(intent);
		tabhost.addTab(spec);
		intent = new Intent().setClass(this, food.class);
		spec = tabhost.newTabSpec("food")
				.setIndicator("음식", res.getDrawable(R.drawable.food))
				.setContent(intent);
		tabhost.addTab(spec);
		intent = new Intent().setClass(this, summer.class);
		spec = tabhost.newTabSpec("summer")
				.setIndicator("여름계획", res.getDrawable(R.drawable.summer))
				.setContent(intent);
		tabhost.addTab(spec);
		tabhost.setCurrentTab(0);
	}
}





//그리드뷰xml

<?xml version="1.0" encoding="utf-8"?>
<GridView xmlns:android="http://schemas.android.com/apk/res/android"  
    android:id="@+id/gridview"
    android:layout_width="fill_parent"  
    android:layout_height="fill_parent"
    android:numColumns="auto_fit"
    android:verticalSpacing="2dp"
    android:horizontalSpacing="2dp"
    android:columnWidth="90dp"
    android:stretchMode="columnWidth"
    android:gravity="center"
/>

mianactivity에서 갤러리탭을 누르면 그리드뷰로 넘어가려고 하는데 계속 오류가 뜨네요......

안드로이드 초보자이지만 미숙한 로그캣이용을 하면서 아무리 오류를 찾아봐도 안나오네요,,,,

무엇이 잘못되었는지 궁금합니다. 도움부탁드려요 ㅠㅠ

tiamo (120 포인트) 님이 2014년 6월 13일 질문

1개의 답변

0 추천

       com.szugyi.circlemenu.MainActivity ActivityA = (com.szugyi.circlemenu.MainActivity) com.szugyi.circlemenu.MainActivity.A;

        ActivityA.finish();
 
이건 뭔가요?
 
그리고 오류 메시지라도 올려야 문제 원인을 찾을 수 있습니다.
익명사용자 님이 2014년 6월 13일 답변
com.szugyi.circle~~<=이거는 R파일이 다른패키지안에있어서 적은거구요
 finish는 탭뷰 전에 로딩화면이 있어서 적은거 입니다
오류메시지는 예기치않게 종료된다고 떠요...
...