2013-02-08 5 views
0

Я заполняю alerttdialog из базы данных. Я сохраняю эти значения в arrayList, конвертирую их в список charsequence и устанавливая их в свой конструктор alertdialog. Как показано:Ошибка преобразования ArrayList при выборе опции

Это скриншот вариантов моего заселенных «текст шаблона» из моей базы данных:

enter image description here

В тот момент, когда я нажимаю один из моих вариантов, например Call me. он отображается так, как должен, в указанном редакторе. Если я нажму на один из других вариантов, например «Отправить мне по электронной почте», это будет проигнорировано, только мой первый вариант «если» Call me. будет работать, как показано ниже:

enter image description here

Это приводит меня к мысли, по какой-то причине только 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; 
     } 


} 
+0

Почему бы вам не избавиться от дублированного кода, проверив «Создать новый шаблон +» в одном операторе 'if' и помещая' setEmailMessage.setText (items [item]); 'в' else' статья? – harpun

ответ

0

Немного неловко, но я просто понял, что есть разные строки, сравнивая мои МСФ к струнам, хранящихся в CharSequence, так что теперь работает!

 Смежные вопросы

  • Нет связанных вопросов^_^