Android 即使我能够进入通话记录,按下时我的编辑文本也不会显示通话记录号码

Android 即使我能够进入通话记录,按下时我的编辑文本也不会显示通话记录号码,android,android-intent,android-edittext,contacts,calllog,Android,Android Intent,Android Edittext,Contacts,Calllog,经过一些研究和编码,我能够进入我的通话记录。在我添加了更多代码以便能够从callLog检索到edittext的号码之后,似乎出现了错误。我已经在谷歌上搜索过了,但到目前为止都没有用。有什么建议吗-西蒙- import java.sql.Date; import java.util.ArrayList; import java.util.List; import android.app.Activity; import android.app.AlertDialog; import androi

经过一些研究和编码,我能够进入我的通话记录。在我添加了更多代码以便能够从callLog检索到edittext的号码之后,似乎出现了错误。我已经在谷歌上搜索过了,但到目前为止都没有用。有什么建议吗-西蒙-

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");
}
}
}
import java.sql.Date;
导入java.util.ArrayList;
导入java.util.List;
导入android.app.Activity;
导入android.app.AlertDialog;
导入android.content.DialogInterface;
导入android.content.Intent;
导入android.database.Cursor;
导入android.net.Uri;
导入android.os.Bundle;
导入android.provider.CallLog;
导入android.util.Log;
导入android.view.view;
导入android.widget.Button;
导入android.widget.EditText;
公共类SimonCallLogActivity扩展了活动{
/**在首次创建活动时调用*/
编辑文本显示;
按钮日志;
@凌驾
创建时的公共void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
//转到调用日志//
log=(按钮)findViewById(R.id.button1);
log.setOnClickListener(新建按钮.OnClickListener(){
公共void onClick(视图v){
Intent myIntent=新Intent();
myIntent.setAction(Intent.ACTION\u CALL\u按钮);
星触觉(myIntent);
}
});
}
//通话记录//
受保护的void onActivityResult(int请求代码、int结果代码、意图数据){
super.onActivityResult(请求代码、结果代码、数据);
最终EditText编号=(EditText)findViewById(R.id.editText1);
游标=空;
字符串phoneNo=“”;
List logNumbers=new ArrayList();
String[]projection=新字符串[]{CallLog.Calls.NUMBER,CallLog.Calls.DATE,CallLog.Calls.CACHED_NAME};
Uri contacts=CallLog.Calls.CONTENT\u Uri;
游标managedCursor=managedQuery(联系人、投影、null、null、CallLog.Calls.DATE+“ASC”);
getColumnData(managedCursor);
}
私有void getColumnData(游标cur){
试一试{
if(cur.moveToFirst()){
字符串名;
字符串编号;
长日期;
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(“读取呼叫详细信息:”);
做{
name=cur.getString(nameColumn);
number=cur.getString(numberColumn);
date=cur.getLong(dateColumn);
系统输出打印项次(编号+“:”+新日期(日期)+“:”+名称);
//number.setText(numberColumn);
}while(cur.moveToNext());
}
}    
最后
{
cur.close();
}
最终字符串[]items=logNumbers.toArray(新字符串[logNumbers.size()]);
AlertDialog.Builder=新建AlertDialog.Builder(SimonCallLogActivity.this);
setTitle(“选择一个数字:”);
setItems(items,新的DialogInterface.OnClickListener()对话框){
公共void onClick(对话框接口对话框,int项){
//TODO自动生成的方法存根
String selectedNumber=items[item].toString();
selectedNumber=selectedNumber。替换(“-”,”);
selectedNumber=selectedNumber.replace(“Home:,”);
selectedNumber=selectedNumber.replace(“手机:,”);
selectedNumber=selectedNumber.replace(“工作:,”);
selectedNumber=selectedNumber.replace(“其他:,”);
//selectedNumber=selectedNumber.replace(“+”,”);
number.setText(selectedNumber);
}
});
AlertDialog alert=builder.create();
如果(logNumbers.size()>1){
alert.show();
}否则{
String selectedNumber=phoneNo.toString();
selectedNumber=selectedNumber。替换(“-”,”);
number.setText(selectedNumber);
}
if(phoneNo.length()=0){
日志d(“西蒙”,“无联系人”);
}                                               
}
打破
}
}否则
{
//优雅地处理失败
Log.w(“SIMON”,“警告活动不正常”);
}
}
}

声明
日志编号
编号
SimonCallLogActivity
类的成员

public class SimonCallLogActivity extends Activity {

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

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

}
公共类SimonCallLogActivity扩展活动{
/**成员变量*/
编辑文本显示;
按钮日志;
List logNumbers=new ArrayList();
编辑文本编号;
...
...
}

删除它们的本地声明。

这些“错误”是什么?我在“logNumbers”->\\final String[]items=logNumbers.toArray(新字符串[logNumbers.size()])处有一条红色下划线//另一个红色下划线表示“number”->\\number.setText(selectedNumber)//我不确定我的编码是否结构错误,或者我可能会错过一些东西……嗨,你说的“成员”是什么意思?我不明白。你用java编程多久了?就像编辑文本显示一样;按钮日志大约一个月,我还在学习。。我已经将lognumbers声明为List lognumbers=new ArrayList();我建议你从一个简单的项目开始学习android编程。。这个项目对您来说太复杂了,因为您甚至不能修复简单的语法错误。先做一个hello world应用程序。不要从某处抄袭。徒手打字。您将学习修复语法错误。。