setContentView()를 이용하여 xml 파일에 있는 내용을 화면에 띄우려는데 안되요ㅠ
계속 오류가 뜬다는 메세지가 나오네요..
대략적인 코드를 적어보겠습니다.
전체적인 구조는
클래스 A에서 main.xml 파일을 불러와서 그림을 하나 띄웁니다.
여기서 해당 구역을 클릭하면(OnTouchEvent() 사용) 인텐트를 이용하여 B.java 로 연결됩니다.
클래스 B에서 b.xml을 불러와서 picture.jpg 파일을 띄우려고 합니다.
============================================
<A.java> 파일의 내용
import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.view.MotionEvent;
import android.view.View;
import android.view.View.OnClickListener;
import android.view.View.OnTouchListener;
public class A extends Activity implements OnTouchListener, OnClickListener{
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
}
private float x;
private float y;
public boolean onTouchEvent(MotionEvent event){
final int action = event.getAction();
switch(action){
case MotionEvent.ACTION_UP:{
x = event.getX();
y = event.getY();
if( (x>32 && x<120) && (y>74 && y<156 ) ){
Intent r = new Intent(this, B.class);
startActivity(r);
}
break;
}
}
return false;
}
@Override
public boolean onTouch(View v, MotionEvent event) {
// TODO Auto-generated method stub
return false;
}
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
}
}
=====================================================
<B.java> 파일의 내용
import android.app.Activity;
import android.os.Bundle;
public class B extends Activity {
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.b);
}
}
===================================================
<b.xml> 파일의 내용
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_height="wrap_content"
android:layout_width="fill_parent">
<TextView
android:text="the title"
android:id="@+id/buildingq_title"
android:layout_gravity="center"
android:gravity="center"
android:textSize="24.5sp"
android:textColor ="#ffffff"
android:background ="#aaaaaa"
android:layout_width="340px"
android:layout_height="50px"/>
<ScrollView xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:id="@+id/ScrollView1">
<LinearLayout
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:orientation="vertical">
<ImageView
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:src="@drawable/r"
android:scaleType="fitXY"
android:layout_marginBottom="30dip"/>
<TextView
android:text="detail"
android:id="@+id/buildingq_detail"
android:layout_gravity="center"
android:gravity="left"
android:textSize="15sp" />
</LinearLayout>
</ScrollView>
</LinearLayout>
==========================
<Manifest>파일의 내용
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="org.example.a"
android:versionCode="1"
android:versionName="1.0">
<application android:icon="@drawable/icon" android:label="@string/app_name">
<activity android:name=".A"
android:label="@string/app_name">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
<activity android:name=".B" android:label="@string/app_name"></activity>
</application>
</manifest>
===============================
전체적인 내용이 위와 같은 구조 입니다.
실행해서 해당 구역을 클릭하니 예상치못하게 종료한다는 메세지가 나옵니다.
그래서 제가 b.xml파일에서 전부 다 지우고
<ImageView
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:src="@drawable/picture"
android:scaleType="fitXY"
android:layout_marginBottom="30dip"/>
이 부분만 남겨두었더니 또 그림이 나타납니다.
아무래도 TextView 혹은 ScrollView를 이용하면 오류가 나오는 건가요?
왜 그런건가요???
혹시 해결책이 있을까요? ㅠㅠ
고수님들 부탁드립니다.
로그캣 내용은 다음과 같습니다. ㅠㅠ
11-01 23:25:39.585: INFO/ActivityManager(60): Starting activity: Intent { act=android.intent.action.MAIN cat=[android.intent.category.LAUNCHER] flg=0x10200000 cmp=org.example.a/.A }
11-01 23:25:40.015: INFO/ActivityManager(60): Start proc org.example.a for activity org.example.a/.A: pid=356 uid=10037 gids={1015}
11-01 23:25:40.396: DEBUG/dalvikvm(33): GC_EXPLICIT freed 279 objects / 10576 bytes in 372ms
11-01 23:25:40.585: DEBUG/dalvikvm(33): GC_EXPLICIT freed 47 objects / 2056 bytes in 162ms
11-01 23:25:40.755: DEBUG/dalvikvm(33): GC_EXPLICIT freed 2 objects / 64 bytes in 175ms
11-01 23:25:41.965: INFO/ActivityManager(60): Displayed activity org.example.a/.A: 2145 ms (total 22745 ms)
11-01 23:25:47.366: DEBUG/dalvikvm(127): GC_EXPLICIT freed 446 objects / 21504 bytes in 313ms
11-01 23:25:52.726: INFO/ActivityManager(60): Starting activity: Intent { cmp=org.example.a/.B }
11-01 23:25:53.035: DEBUG/AndroidRuntime(356): Shutting down VM
11-01 23:25:53.035: WARN/dalvikvm(356): threadid=1: thread exiting with uncaught exception (group=0x4001d800)
11-01 23:25:53.066: ERROR/AndroidRuntime(356): FATAL EXCEPTION: main
11-01 23:25:53.066: ERROR/AndroidRuntime(356): java.lang.RuntimeException: Unable to start activity ComponentInfo{org.example.a/org.example.a.B}: java.lang.RuntimeException: Binary XML file line #34: You must supply a layout_width attribute.
11-01 23:25:53.066: ERROR/AndroidRuntime(356): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2663)
11-01 23:25:53.066: ERROR/AndroidRuntime(356): at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2679)
11-01 23:25:53.066: ERROR/AndroidRuntime(356): at android.app.ActivityThread.access$2300(ActivityThread.java:125)
11-01 23:25:53.066: ERROR/AndroidRuntime(356): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:2033)
11-01 23:25:53.066: ERROR/AndroidRuntime(356): at android.os.Handler.dispatchMessage(Handler.java:99)
11-01 23:25:53.066: ERROR/AndroidRuntime(356): at android.os.Looper.loop(Looper.java:123)
11-01 23:25:53.066: ERROR/AndroidRuntime(356): at android.app.ActivityThread.main(ActivityThread.java:4627)
11-01 23:25:53.066: ERROR/AndroidRuntime(356): at java.lang.reflect.Method.invokeNative(Native Method)
11-01 23:25:53.066: ERROR/AndroidRuntime(356): at java.lang.reflect.Method.invoke(Method.java:521)
11-01 23:25:53.066: ERROR/AndroidRuntime(356): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:868)
11-01 23:25:53.066: ERROR/AndroidRuntime(356): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:626)
11-01 23:25:53.066: ERROR/AndroidRuntime(356): at dalvik.system.NativeStart.main(Native Method)
11-01 23:25:53.066: ERROR/AndroidRuntime(356): Caused by: java.lang.RuntimeException: Binary XML file line #34: You must supply a layout_width attribute.
11-01 23:25:53.066: ERROR/AndroidRuntime(356): at android.content.res.TypedArray.getLayoutDimension(TypedArray.java:491)
11-01 23:25:53.066: ERROR/AndroidRuntime(356): at android.view.ViewGroup$LayoutParams.setBaseAttributes(ViewGroup.java:3592)
11-01 23:25:53.066: ERROR/AndroidRuntime(356): at android.view.ViewGroup$MarginLayoutParams.<init>(ViewGroup.java:3672)
11-01 23:25:53.066: ERROR/AndroidRuntime(356): at android.widget.LinearLayout$LayoutParams.<init>(LinearLayout.java:1395)
11-01 23:25:53.066: ERROR/AndroidRuntime(356): at android.widget.LinearLayout.generateLayoutParams(LinearLayout.java:1321)
11-01 23:25:53.066: ERROR/AndroidRuntime(356): at android.widget.LinearLayout.generateLayoutParams(LinearLayout.java:45)
11-01 23:25:53.066: ERROR/AndroidRuntime(356): at android.view.LayoutInflater.rInflate(LayoutInflater.java:620)
11-01 23:25:53.066: ERROR/AndroidRuntime(356): at android.view.LayoutInflater.rInflate(LayoutInflater.java:621)
11-01 23:25:53.066: ERROR/AndroidRuntime(356): at android.view.LayoutInflater.rInflate(LayoutInflater.java:621)
11-01 23:25:53.066: ERROR/AndroidRuntime(356): at android.view.LayoutInflater.inflate(LayoutInflater.java:407)
11-01 23:25:53.066: ERROR/AndroidRuntime(356): at android.view.LayoutInflater.inflate(LayoutInflater.java:320)
11-01 23:25:53.066: ERROR/AndroidRuntime(356): at android.view.LayoutInflater.inflate(LayoutInflater.java:276)
11-01 23:25:53.066: ERROR/AndroidRuntime(356): at com.android.internal.policy.impl.PhoneWindow.setContentView(PhoneWindow.java:198)
11-01 23:25:53.066: ERROR/AndroidRuntime(356): at android.app.Activity.setContentView(Activity.java:1647)
11-01 23:25:53.066: ERROR/AndroidRuntime(356): at org.example.a.B.onCreate(B.java:10)
11-01 23:25:53.066: ERROR/AndroidRuntime(356): at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1047)
11-01 23:25:53.066: ERROR/AndroidRuntime(356): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2627)
11-01 23:25:53.066: ERROR/AndroidRuntime(356): ... 11 more
11-01 23:25:53.095: WARN/ActivityManager(60): Force finishing activity org.example.a/.B
11-01 23:25:53.115: WARN/ActivityManager(60): Force finishing activity org.example.a/.A
11-01 23:25:53.616: WARN/ActivityManager(60): Activity pause timeout for HistoryRecord{45051c00 org.example.a/.B}
11-01 23:25:57.075: INFO/Process(356): Sending signal. PID: 356 SIG: 9
11-01 23:25:57.645: INFO/ActivityManager(60): Process org.example.a (pid 356) has died.
11-01 23:25:57.645: INFO/WindowManager(60): WIN DEATH: Window{45063b00 org.example.a/org.example.a.A paused=true}
11-01 23:26:04.606: WARN/ActivityManager(60): Activity destroy timeout for HistoryRecord{45074ee8 org.example.a/.A}
11-01 23:26:04.647: WARN/ActivityManager(60): Activity destroy timeout for HistoryRecord{45051c00 org.example.a/.B}




혹시 AndroidManifest.xml에 추가하신 Activity 정보를 넣으셨는지요?