Activity에서 List\Activity를 상속받아서 리스트를불러오고자 하는데요
이것이 첫번째 메인화면이구여
public class TelephonyDemo extends Activity
{
@Override
protected void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
Button sendBtn = (Button)findViewById(R.id.sendSmsBtn);
Button next = (Button)findViewById(R.id.next);
next.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v)
{
Intent intent = new Intent(TelephonyDemo.this, twoActivity.class);
startActivity(intent);
}
});
sendBtn.setOnClickListener(new OnClickListener()
{
@Override
public void onClick(View view)
{
EditText addrTxt = (EditText)TelephonyDemo.this.findViewById(R.id.addrEditText);
EditText msgTxt = (EditText)TelephonyDemo.this.findViewById(R.id.msgEditText);
try{
sendSmsMessage(addrTxt.getText().toString(),msgTxt.getText().toString());
Toast.makeText(TelephonyDemo.this, "SMS 발신 완료",Toast.LENGTH_LONG).show();
}
catch (Exception e)
{
Toast.makeText(TelephonyDemo.this, "SMS 전송 실패",Toast.LENGTH_LONG).show();
e.printStackTrace();
}
}
});
}
@Override
protected void onDestroy()
{
super.onDestroy();
}
private void sendSmsMessage(String address,String message)throws Exception
{
SmsManager smsMgr = SmsManager.getDefault();
smsMgr.sendTextMessage(address, null, message, null, null);
}
}
이것이2번째 ListActivity화면입니다
public class twoActivity extends ListActivity
{
private ListAdapter adapter;
private static final Uri twoActivity = Uri.parse("content://sms/inbox");
@Override
public void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.main); // 첫번째 XML을 콘텐트 뷰로 지정
Cursor c = getContentResolver().query(twoActivity, null, null, null, null);
startManagingCursor(c); //액티비트와 커서의 수명주기를 일치시킴
String[] columns = new String[] {"body"};
int [] names = new int [] {R.id.row};
adapter = new SimpleCursorAdapter(this, R.layout.sms_inbox, c, columns, names);
setListAdapter(adapter);
setContentView(R.layout.main2);
Button back01 = (Button)findViewById(R.id.back01);
back01.setOnClickListener(new Button.OnClickListener()
{
public void onClick(View v)
{
finish(); // 액티비티를 종료
}
});
Button next01 = (Button)findViewById(R.id.next01);
next01.setOnClickListener(new OnClickListener()
{
@Override
public void onClick(View v)
{
Intent intent = new Intent(twoActivity.this, three.class);
startActivity(intent);
}
});
}
}
두개의 화면을 연결시키려고 하는데 ListActivity가 열리질 않아서 문의드립니다..
인텐드를 이용한 버튼클릭을 하는예제는 재대로 되는데 수신함 리스트를 불러오는게 안되는이유를 모르겠네요
이래는 메인 xml입니다
<?xml version="1.0" encoding="utf-8" ?>
<!-- 이 파일은 /res/layout/main.xml이다.-->
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="fill_parent"
android:layout_height="fill_parent">
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="horizontal"
android:layout_width="fill_parent"
android:layout_height="wrap_content">
<TextView android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="수신 번호:" />
<EditText android:id="@+id/addrEditText"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:phoneNumber="true"
android:hint="ex) 010-1234-5678"/>
</LinearLayout>
<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="wrap_content"
android:layout_height="wrap_content"
android:text="문자 메시지:" />
<EditText android:id="@+id/msgEditText"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="안녕 SMS" />
</LinearLayout>
<Button android:id="@+id/sendSmsBtn"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="문자 메시지 전송" />
<Button android:id="@+id/next"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="다음으로" />
</LinearLayout>
다음은 ListActivity의 xml입니다
<?xml version="1.0" encoding="UTF-8"?>
<!-- 이파일은 /res/layout/sms_inbox.xml파일이다. -->
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="fill_parent"
android:layout_height="fill_parent">
<TextView android:id="@+id/row"
android:layout_width="fill_parent"
android:layout_height="fill_parent"/>
</LinearLayout>
메니페스트 파일입니다
<?xml version="1.0" encoding="utf-8" ?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android" package="pro.android" android:versionCode="1" android:versionName="1.0">
<application android:icon="@drawable/icon" android:label="@string/app_name">
<activity android:name=".TelephonyDemo" 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=".twoActivity" android:label="@string/app_name">
<intent-filter>
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
<activity android:name="three"/>
</application>
<uses-sdk android:minSdkVersion="8" />
<uses-permission android:name="android.permission.SEND_SMS" />
<uses-permission android:name="android.permission.RECEIVE_SMS" />
<receiver android:name="MySMSMonitor">
<intent-filter>
<action android:name="android.provider.Telephony.SMS_RECEIVED" />
</intent-filter>
</receiver>
</manifest>
초보인 저로서는 이유를 도통모르겠군요..
고수님들 답변좀 부탁드립니다..ㅠㅠㅠㅠㅠㅠ
SimpleCursorAdapter가 columns와 names를 읽어와 R.layout.sms_inbox에 나타냅니다.(맞는 설명인지...;;)
그러니 R.layout.sms_inbox는 일단 columns와 names를 표시할 자리가 두개가 필요하겠죠?
android.R.layout.simple_list_item_2를 쓰시던가 R.layout.sms_inbox를 텍스트뷰 두개가 있는거로 수정해야할겁니다.