2013-02-08 1 views
0

데이터베이스에서 alerttdialog를 채 웁니다. 이 값들을 arrayList에 저장하고 charsequence 목록으로 변환 한 다음 내 alertdialog 빌더로 설정합니다. 내가 예를 Call me 내 옵션 중 하나를 클릭하면옵션을 선택할 때 ArrayList에서 charsetence 변환 문제가 발생했습니다.

enter image description here

순간 : 같이 :

이 내 데이터베이스에서 내 인구 '텍스트 템플릿'옵션의 스크린 샷이다. 지정된 편집 텍스트 내에서 표시되어야합니다. '이메일로 보내기'와 같은 다른 옵션 중 하나를 클릭하면 무시됩니다. 첫 번째 'if'옵션에만 적용됩니다. Call me. 그림과 같이 작동합니다 : 이것은 단지 Call me 내 CharSequence를 배열에 추가 된 몇 가지 이유가 있는게 틀림 없어하지만 난 이유를 모르겠어요

enter image description here

. 여기 내 수업이 있습니다. 이 문제는 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; 
     } 


} 
+0

하나의'if' 문에서''Create New Template + "'을 체크하고'else'에''setEmailMessage.setText (items [item]); ''을 넣어 중복 된 코드를 없애는 것은 어떻습니까? 절? – harpun

답변

0

약간 당황하지만 난 그냥이의 CharSequence에 저장된 문자열 내 IF를 비교 다른 문자열을 실현, 그래서 지금 노력하고 있습니다!

관련 문제