2012-07-22 5 views
-1

일부 연구 및 코딩을 마친 후 callLog에 접속할 수 있습니다. calllog에서 내 edittext로 숫자를 검색 할 수 있도록 더 많은 코드를 추가 한 후에는 오류가있는 것 같습니다. 나는 이것에 봤지만 지금까지 아무 소용이 없습니다. 어떤 조언? -Simon-내 edittext가 callLog를 표시하지 않습니다. callLog에 들어갈 수 있습니다.

import java.sql.Date; 
import java.util.ArrayList; 
import java.util.List; 

import android.app.Activity; 
import android.app.AlertDialog; 
import android.content.DialogInterface; 
import android.content.Intent; 
import android.database.Cursor; 
import android.net.Uri; 
import android.os.Bundle; 
import android.provider.CallLog; 
import android.util.Log; 
import android.view.View; 
import android.widget.Button; 
import android.widget.EditText; 

public class SimonCallLogActivity extends Activity { 
/** Called when the activity is first created. */ 
EditText display; 
Button log; 

@Override 
public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.main); 

    //to go to Call Log//   
    log=(Button)findViewById(R.id.button1);   
    log.setOnClickListener(new Button.OnClickListener(){ 

     public void onClick(View v) {    
      Intent myIntent=new Intent(); 
      myIntent.setAction(Intent.ACTION_CALL_BUTTON); 
      startActivity(myIntent); 
      } 
     }); 
} 
//Call Log// 
protected void onActivityResult(int requestCode, int resultCode, Intent data) { 
    super.onActivityResult(requestCode, resultCode, data); 
    final EditText number = (EditText) findViewById(R.id.editText1); 
    Cursor cursor = null; 
    String phoneNo = " "; 
    List<String> logNumbers = new ArrayList<String>(); 

     String[] projection = new String[] {CallLog.Calls.NUMBER,  CallLog.Calls.DATE, CallLog.Calls.CACHED_NAME}; 
     Uri contacts = CallLog.Calls.CONTENT_URI; 

     Cursor managedCursor = managedQuery(contacts, projection, null, null,  CallLog.Calls.DATE + " ASC"); 
     getColumnData(managedCursor); 
    } 
private void getColumnData(Cursor cur){ 
    try{ 
     if (cur.moveToFirst()) { 
     String name; 
     String number; 
     long date; 
     int nameColumn = cur.getColumnIndex(CallLog.Calls.CACHED_NAME); 
     int numberColumn = cur.getColumnIndex(CallLog.Calls.NUMBER); 
     int dateColumn = cur.getColumnIndex(CallLog.Calls.DATE); 

     System.out.println("Reading Call Details: "); 
     do { 
      name = cur.getString(nameColumn); 
      number = cur.getString(numberColumn); 
      date = cur.getLong(dateColumn); 
      System.out.println(number + ":"+ new Date(date) +":"+name); 
      // number.setText(numberColumn); 

     } while (cur.moveToNext()); 
     } 
    }  
    finally 
    { 
    cur.close(); 
    } 

    final String [] items = logNumbers.toArray(new String[logNumbers.size()  ]) ; 
    AlertDialog.Builder builder = new  AlertDialog.Builder(SimonCallLogActivity.this); 
    builder.setTitle("Choose a number: "); 
    builder.setItems(items, new DialogInterface.OnClickListener() { 

public void onClick(DialogInterface dialog, int item) { 
// TODO Auto-generated method stub 
String selectedNumber = items[item].toString(); 
selectedNumber= selectedNumber.replace("-",""); 
selectedNumber= selectedNumber.replace("Home:", ""); 
selectedNumber= selectedNumber.replace("Mobile:", ""); 
selectedNumber= selectedNumber.replace("Work:", ""); 
selectedNumber= selectedNumber.replace("Other:", ""); 
//selectedNumber = selectedNumber.replace("+","");             

    number.setText(selectedNumber);             
} 
}); 
    AlertDialog alert = builder.create(); 
    if(logNumbers.size()>1){ 
    alert.show(); 

    }else{ 
    String selectedNumber= phoneNo.toString(); 
    selectedNumber=selectedNumber.replace("-", ""); 

     number.setText(selectedNumber);             
    } 
    if(phoneNo.length()==0){ 
    Log.d("SIMON", "No  contact");            
     }            
    } 
    break;    
    } 
}else 
{ 
//gracefully handle failure 
Log.w("SIMON","Warning activity not okay"); 
} 
} 
} 
+0

그 "약간의 오류"를 무엇입니까? – Ronnie

+0

"logNumbers"-> \\ final String [] items = logNumbers.toArray (new String [logNumbers.size()]); // –

+0

에 빨간색 밑줄이있는 경우 "number"-> \\ number의 빨간색 밑줄 .setText (selectedNumber); // –

답변

0

SimonCallLogActivity 클래스의 구성원으로 logNumbersnumber를 선언합니다.

public class SimonCallLogActivity extends Activity { 

    /** Member variables */ 
    EditText display; 
    Button log; 

    List<String> logNumbers = new ArrayList<String>(); 
    EditText number; 
    ... 
    ... 

} 

로컬 선언을 제거 ..

+0

안녕하세요, 회원으로 신고하면 무슨 뜻입니까? 나는 이해하지 못한다. –

+0

자바에서 얼마나 오래 프로그래밍 되었습니까? 'EditText display를 좋아하십시오; 버튼 로그; ' – Ronnie

+0

모든 메소드 외부에 선언하십시오. 약 한 달에 약 – Ronnie