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项目