앱을 개발하고 있는데 메인 화면에서 ImageButton을 이용해 메뉴를 만든 후에 그 메뉴를 누르면 intent 를 이용하여 액티비티를 전환하려고 개발하는 중이였습니다.
그런데, intent로 액티비티를 전환할때 그냥 액티비티로의 전환은 되는데 ListActivity로 전환을 하려고 하니 ImageButton 클릭시
예기치않은 오류가 발생했다고 합니다 ㅠ
manifest 파일에서 ListActivity를 그냥 activity로 바꾸어도 보고, ListActivity 를 Activity 로 변환해 보려고도 시도해보았으나 다른 팀원이 한부분이라 함부로 바꾸지 못했습니다. 그리고, ListActivity 를 Activity로 바꾸니 getListView(); 함수 때문에 먹히질 않더군요 ㅠ
대체 어떻게 해야 이미지버튼을 눌렀을때 ListActivity 로 넘어갈까요??!!
몇시간째 네이버와 구글 검색을 했는데 도저히 모르겠습니다.ㅠㅠ 좀 도와주세요
이클립스에서 개발중이구요.
설명의 더 정확한 이해를 위해 코드 첨부합니다.
메뉴는 BatMenu.java , 전환하려고 하는 액티비티는 BatNews.java 입니다.
=============================BatMenu.java ================================
package com.BatMenu;
import android.app.Activity;
import android.os.Bundle;
import android.view.View;
import android.content.Intent;
import android.widget.ImageButton;
public class BatMenu extends Activity {
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main_menu);
ImageButton btn_first = (ImageButton)findViewById(R.id.bt_schedule);
btn_first.setOnClickListener(new ImageButton.OnClickListener(){
public void onClick(View v) {
Intent intent = new Intent(BatMenu.this, BatNews.class); // 여기서 문제가 발생하는 것 같습니다.
startActivity(intent); // 혹은 여기^^
}
});
}
}
=============================BatNews.java ================================
package com.BatMenu;
import android.app.ListActivity;
import android.os.Bundle;
import android.widget.ListView;
public class BatNews extends ListActivity { // 이부분을 Activity로 고치니
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
LayoutAdapter layoutAdapter = new LayoutAdapter(this);
layoutAdapter.addItem(news1);
.......
ListView listView = getListView(); // 여기서 걸리더라구요 ㅠ
listView.setAdapter(layoutAdapter);
listView.setTextFilterEnabled(true);
}
static final String[] news1 = new String[] {"News1", "2011-04-21", "LG���먯궛��'�쒖슱��遊����대걣硫�愿�쨷��컯��二쇰룄�섍퀬 �덈떎. �ъ떆利��좎떎援ъ옣�먯꽌 �쇱퀜吏��먯궛怨�LG��媛쒕쭑��"};
........
}
=============================AndroidManifest.================================
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.BatMenu"
android:versionCode="1"
android:versionName="1.0">
<uses-sdk android:minSdkVersion="8" />
<application android:icon="@drawable/icon" android:label="@string/app_name">
<activity android:name=".BatMenu"
android:label="@string/app_name">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
<listactivity android:name="BatNews"></listactivity>//이 부분에서 그냥 activity로도 고쳐보았으니 안되더군요 ㅠ
<BaseAdapter android:name="LayoutAdapter"></BaseAdapter>
</application>
</manifest>
혹시 ListActivity 가 intent 로서 전환이 안된다면... ListActivity를 Activity로 바꾸는 방법이라도 좀 가르쳐 주세요 ㅠ
getListView() 를 대체하여 쓸 수 있는 함수라던가 하는 것으로요~!
꼭 답변 부탁합니다 ㅠㅠ
매니페스트에서 "BatNews"를 ".BatNews"로 바꿔주고
다른 분께서 변형해준 BatNews 파일을 적용하니 되더군요^^
그리고 참고로 listactivity 에서 인터넷에서 파싱을 해 왔기 때문에
매니페스트 파일에
<uses-permission android:name="android.permission.INTERNET" />
이 라인을 꼭 추가해야 되더군요 ㅠ
추가 안하니 리스트가 다 안뜨더랍니다^^
이 문제 생기신분들 참고하세요~!
결론은 코드 자체에 문제가 있거나 매니페스트 파일을 잘못쓴 것 같습니다.
그리고 매니페스트 파일에서 <listactivity> 말고 그냥 <activity>로 써야 되더군요~!




매니페스트에선 listactivity 대신 activity가 맞구요. BaseAdapter를 여기에 등록하실 필요는 없을텐데요.. 빼셔도 되실듯 한데...
ANR이 떴을 때 어디서 문제가 되는지 궁금하시면 로그캣을 읽어보시면 정확한 라인을 파악할 수 있습니다. 보통은 list adapter 연동문제나 xml상에서 오류가 있을 경우가 많더라구요.