Android开发从入门到精通(7) _7

执行一个EditText View 第七章(7)

   你需要增加一个View到活动中来使得用户输入一些文本。然后你会分析那个文本并把它发送到前一节的Intent呼叫中。因为所有的视图是从基本的视图中派生出来的,它们在结构和使用方面非常的相似。你会发现执行一个EditText是一个非常简单的操作。

    首先,在main.xml文件中放置 Views。实际上这里要放两个View:一个TextView来实现作为一个标签并且给出一些指示给用户,另外一个就是EditView来接收用户的输入。这个Views一起将增加深度和实用性到你的活动中。

    因为你组成活动的外观,记住.xml是在视觉上构成的。这个就意味着加入你要TextView在最后的活动中显示在EditText的上面,你应当在main.xml文件中把它放在EditText之前。

    因为你已经用过好几次TextViews了,所以这里不会讲的太多。简单的看一些你设置的TextView的属性:

<TextView android:id="@+id/textLabel" 

android:layout_width="fill_parent"

android:layout_height="wrap_content"

android:text="EnterNumbertoDial:"

/>

   没什么特别的地方。这只是个简单的TextView用文本输入号码来拨号:。这个TextView将会用做EditView的显示标签。这里是你为EditView设置的属性:

<EditText android:id="@+id/phoneNumber" 

android:layout_width="fill_parent"

android:layout_height="wrap_content"

/> 

注意

你没有必要一定去设置androd:text属性,因为你不需要任何缺省的文本。

    这个id被用来设为phoneNumber,这是个名字,你将要用来在代码中参阅到EditText。再说一次,当设置main.xml时,没什么特别之处。最后的文件应当看起来如下:

<?xml version="1.0" encoding="utf-8"?> 

<LinearLayoutxmlns:android=http://schemas.android.com/apk/res/android

android:orientation="vertical"

android:layout_width="fill_parent"

142Android:AProgrammer’sGuide

Chapter7:UsingIntentsandthePhoneDialer143

android:layout_height="fill_parent"

>

<TextViewandroid:id="@+id/textLabel"

android:layout_width="fill_parent"

android:layout_height="wrap_content"

android:text="EnterNumbertoDial:"

/>

<EditTextandroid:id="@+id/phoneNumber"

android:layout_width="fill_parent"

android:layout_height="wrap_content"

/>

<Buttonandroid:id="@+id/callButton"

android:layout_width="fill_parent"

android:layout_height="wrap_content"

android:layout_alignParentRight="true"

android:text="ShowDialer"/>

</LinearLayout> 

    main.xml现在完成了。你可以转移到AndroidPhoneDialer.java来继续工作。假如你不在使用一个现存的AndroidPhoneDialer.java文件——本章中的前一个项目——你可能需要参阅前一部分去看看增加到.java文件中是什么样的代码。这样会确保你从代码中的正确部分开始。

    在.java文件中你第一个增加的条目是包装定义。你不仅需要增加包装到Uri,按钮和Intent,同时还要到EditText:

import android.widget.Button; 

importandroid.content.Intent;

importandroid.net.Uri;

import android.widget.EditText;

    设置EditText View的语法和设置按钮的语法一致:

final EditText <edittext_name> = <edittext>

    再说一次,呼叫你的EditText phoneNumber。创建EditText的代码如下:

final EditText phoneNumber = (EditText) findViewById(R.id.phoneNumber);

    一旦你的phoneNumber 这个EditTexT创建好了,你可以使用它来参阅在设备上输入的文本。现在你要做的就是呼叫phoneNumber.getText()来找回用户的输入。在下面的行里替换代码数值“tel:5551212”

Intent(Intent.CALL_ACTION,Uri.parse("tel:5551212")); 

withthevalueofgetText():

Intent(Intent.CALL_ACTION,Uri.parse("tel:" + phoneNumber.getText()));

    这就是本项目所有你需要更新的新代码。有了这两个新的附加内容,你可以给用户一个可以输入电话号码的对象,并且把号码发送到电话的呼叫活动中。完整的.java文件中的代码如下:

package android_programmers_guide.AndroidPhoneDialer; 

importandroid.app.Activity;

importandroid.os.Bundle;

importandroid.widget.Button;

importandroid.view.View;

importandroid.content.Intent;

importandroid.net.Uri;

importandroid.widget.EditText;

publicclassAndroidPhoneDialerextendsActivity{

/**Calledwhentheactivityisfirstcreated.*/

@Override

publicvoidonCreate(Bundleicicle){

super.onCreate(icicle);

setContentView(R.layout.main);

finalEditTextphoneNumber=(EditText)findViewById(R.id.phoneNumber

);

finalButtoncallButton=(Button)findViewById(R.id.callButton);

callButton.setOnClickListener(newButton.OnClickListener(){

publicvoidonClick(Viewv){

IntentCallIntent=new

Intent(Intent.CALL_ACTION,Uri.parse("tel:"+phoneNumber.getText()));

CallIntent.setLaunchFlags(Intent.NEW_TASK_LAUNCH);

startActivity(CallIntent);

}

});

}

}

    当你在模拟器中运行应用程序,你应当看到一个类似于下面插图的屏幕(略)。

试试这个:修改AndoridPhoneDialer项目

更多信息请查看 http://www.javady.com/index.php/category/thread

相关推荐