안드로이드 개발 질문/답변
(글 수 45,052)
Button과 DrawLine()을 이용한 선을 한화면에 넣으려고 합니다.
컴파일을하고 에뮬레이터로 돌리는데 예기지 않은 예외로 어플이 실행되지 않네요 ㅠ_ㅡ
저번에 질문으로 setContentView()를 두번 호출하는 오류를 수정하고 main.xml에서 View를 포함하는 방식으로 바꿨습니다.
코드 첨부하겠습니다.
SadariAct.java
public class sadariAct extends Activity { /** Called when the activity is first created. */ @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); Button button = (Button)findViewById(R.id.button); button.setOnClickListener(mCorkyListener); } private OnClickListener mCorkyListener = new OnClickListener() { @Override public void onClick(View v) { // TODO Auto-generated method stub EditText editText = (EditText)findViewById(R.id.editText); editText.setText("Change"); } }; }
SadariView.java
public class SadariView extends View{ private Paint myPaint; public SadariView(Context context){ super(context); init(); } private final void init(){ myPaint = new Paint(); myPaint.setAntiAlias(true); myPaint.setColor(Color.WHITE); } @Override public void onDraw(Canvas canvas){ super.onDraw(canvas); canvas.drawLine(200, 200, 250, 250, myPaint); } }
main.xml
<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:orientation="vertical" android:layout_width="fill_parent" android:layout_height="wrap_content" > <TextView android:layout_width="fill_parent" android:layout_height="wrap_content" android:text="@string/hello" /> <EditText android:id="@+id/editText" android:layout_width="fill_parent" android:layout_height="wrap_content" android:text="Hello, I am a EditText" /> <Button android:id="@+id/button" android:layout_width="fill_parent" android:layout_height="wrap_content" android:text="Hello, I am a Button" /> <android.yhkim.practice.sadari.SadariView android:layout_width="wrap_content" android:layout_height="wrap_content" /> </LinearLayout>
선생님들의 좋은 가르침 부탁드립니다. ( _ _ )
<android.yhkim.practice.sadari.SadariView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
/> 이게 되는건가요?
1.
super.onCreate(savedInstanceState);
setContentView(new SadariView(this)); 하시고
SadariView 클래스에서 버튼을 올리시든지
2.
public void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
LinearLayout ll= new LinearLayout(this);
ll.setOrientation(ll.VERTICAL);
setContentView(ll);
SadariView sView = new SadariView(this);
ll.addView(sView , createParam(300,200));
Button button = new Button(this);
ll.addView(button, createParam(300, 100));
}
private LinearLayout.LayoutParams createParam(int w, int h){
return new LinearLayout.LayoutParams(w, h);
}