데이터베이스에서 alerttdialog를 채 웁니다. 이 값들을 arrayList
에 저장하고 charsequence 목록으로 변환 한 다음 내 alertdialog 빌더로 설정합니다. 내가 예를 Call me
내 옵션 중 하나를 클릭하면옵션을 선택할 때 ArrayList에서 charsetence 변환 문제가 발생했습니다.
순간 : 같이 :
이 내 데이터베이스에서 내 인구 '텍스트 템플릿'옵션의 스크린 샷이다. 지정된 편집 텍스트 내에서 표시되어야합니다. '이메일로 보내기'와 같은 다른 옵션 중 하나를 클릭하면 무시됩니다. 첫 번째 'if'옵션에만 적용됩니다. Call me
. 그림과 같이 작동합니다 : 이것은 단지 Call me
내 CharSequence를 배열에 추가 된 몇 가지 이유가 있는게 틀림 없어하지만 난 이유를 모르겠어요
. 여기 내 수업이 있습니다. 이 문제는 longOnClick
메소드에서 발생합니다. 나는 아래의 코드에서이 문제 영역을 표시 한 :
package com.example.flybase2;
import java.util.ArrayList;
import android.app.Activity;
import android.app.AlertDialog;
import android.app.Dialog;
import android.app.AlertDialog.Builder;
import android.content.DialogInterface;
import android.content.Intent;
import android.database.Cursor;
import android.os.Bundle;
import android.text.Editable;
import android.view.LayoutInflater;
import android.view.View;
import android.view.View.OnClickListener;
import android.view.View.OnLongClickListener;
import android.widget.Button;
import android.widget.EditText;
import android.widget.TextView;
public class ContactsEmail extends Activity implements OnClickListener, OnLongClickListener{
String emailPassed;
String emailAdd;
String emailSub;
String emailMess;
EditText setEmailAddress;
EditText setEmailSubject;
EditText setEmailMessage;
Button btnSendEmail;
int i;
CharSequence[] items;
DBHandlerTempComms addTemp = new DBHandlerTempComms(this, null, null);
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.emaillayout);
Bundle extras = getIntent().getExtras();
if (extras != null) {
emailPassed = extras.getString("passedEmailAdd");
}
setEmailAddress = (EditText) findViewById (R.id.inputEmailAddress);
setEmailAddress.setText(emailPassed);
setEmailSubject = (EditText) findViewById (R.id.inputEmailSubject);
setEmailMessage = (EditText) findViewById (R.id.inputEmailMessage);
btnSendEmail = (Button)findViewById(R.id.btnSendEmail);
btnSendEmail.setOnClickListener(this);
setEmailMessage.setOnLongClickListener(this);
}
@Override
public void onClick(View sendEmailClick) {
emailAdd = setEmailAddress.getText().toString();
emailSub = setEmailSubject.getText().toString();
emailMess = setEmailMessage.getText().toString();
Intent sendEmailIntent = new Intent(Intent.ACTION_SEND);
sendEmailIntent.setType("message/rfc822");
sendEmailIntent.putExtra(Intent.EXTRA_EMAIL,new String[] {emailAdd});
sendEmailIntent.putExtra(Intent.EXTRA_SUBJECT, emailSub);
sendEmailIntent.putExtra(Intent.EXTRA_TEXT, emailMess);
startActivity(Intent.createChooser(sendEmailIntent, "Send mail..."));
finish();
}
*********************ISSUE AREA********************
@Override
public boolean onLongClick(View v) {
addTemp.open();
Cursor getTemps = addTemp.setList();
addTemp.close();
if (getTemps != null) {
String[] from = new String[getTemps.getCount()];
startManagingCursor(getTemps);
if (getTemps.moveToFirst()) {
int count = 0;
do {
String userName = getTemps.getString(1);
from[count] = userName;
count++;
} while (getTemps.moveToNext());
}
ArrayList<String> content = new ArrayList<String>();
for (int a = 0; a < from.length; a ++)
{
content.add(from[a]);
}
items = content.toArray(new CharSequence[content.size()]);
}
Builder alertDialogBuilder = new AlertDialog.Builder(ContactsEmail.this);
alertDialogBuilder.setTitle("Message Templates:");
alertDialogBuilder.setItems(items, new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int item) {
if (items[item].equals("Call me.")) {
setEmailMessage.setText(items[item]);
}
else if (items[item].equals("Text me.")) {
setEmailMessage.setText(items[item]);
}
else if (items[item].equals("Leaving the house now.")) {
setEmailMessage.setText(items[item]);
}
else if (items[item].equals("Leaving work now.")) {
setEmailMessage.setText(items[item]);
}
else if (items[item].equals("Create New Template +")) {
AlertDialog.Builder builder = new AlertDialog.Builder(ContactsEmail.this);
builder.setTitle("Type New Template:");
final EditText input = new EditText(ContactsEmail.this);
builder.setView(input);
builder.setPositiveButton("Ok", new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int whichButton) {
Editable value = input.getText();
setEmailMessage.setText(value);
String templateValue = (String)value.toString();
addTemp.open();
addTemp.insertTemplate(templateValue);
addTemp.close();
}
});
builder.setNegativeButton("Cancel", new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int whichButton) {
}
});
builder.show();
}
}
});
alertDialogBuilder.show();
return true;
}
}
하나의'if' 문에서''Create New Template + "'을 체크하고'else'에''setEmailMessage.setText (items [item]); ''을 넣어 중복 된 코드를 없애는 것은 어떻습니까? 절? – harpun