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="Enter?Number?to?Dial:"? /> |
???没什么特别的地方。这只是个简单的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"?>? <LinearLayout?xmlns:android=http://schemas.android.com/apk/res/android? android:orientation="vertical"? android:layout_width="fill_parent"? 142?Android:?A?Programmer’s?Guide? Chapter?7:?Using?Intents?and?the?Phone?Dialer?143? android:layout_height="fill_parent"? >? <TextView?android:id="@+id/textLabel"? android:layout_width="fill_parent"? android:layout_height="wrap_content"? android:text="Enter?Number?to?Dial:"? />? <EditText?android:id="@+id/phoneNumber"? android:layout_width="fill_parent"? android:layout_height="wrap_content"? />? <Button?android:id="@+id/callButton"? android:layout_width="fill_parent"? android:layout_height="wrap_content"? android:layout_alignParentRight="true"? android:text="Show?Dialer"?/>? </LinearLayout>? |
????main.xml现在完成了。你可以转移到AndroidPhoneDialer.java来继续工作。假如你不在使用一个现存的AndroidPhoneDialer.java文件——本章中的前一个项目——你可能需要参阅前一部分去看看增加到.java文件中是什么样的代码。这样会确保你从代码中的正确部分开始。
????在.java文件中你第一个增加的条目是包装定义。你不仅需要增加包装到Uri,按钮和Intent,同时还要到EditText:
import?android.widget.Button;? import?android.content.Intent;? import?android.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"));? with?the?value?of?getText(?):? Intent(Intent.CALL_ACTION,Uri.parse("tel:"?+?phoneNumber.getText())); |
????这就是本项目所有你需要更新的新代码。有了这两个新的附加内容,你可以给用户一个可以输入电话号码的对象,并且把号码发送到电话的呼叫活动中。完整的.java文件中的代码如下:
package?android_programmers_guide.AndroidPhoneDialer;? import?android.app.Activity;? import?android.os.Bundle;? import?android.widget.Button;? import?android.view.View;? import?android.content.Intent;? import?android.net.Uri;? import?android.widget.EditText;? public?class?AndroidPhoneDialer?extends?Activity?{? /**?Called?when?the?activity?is?first?created.?*/? @Override? public?void?onCreate(Bundle?icicle)?{? super.onCreate(icicle);? setContentView(R.layout.main?);? final?EditText?phoneNumber?=?(EditText)?findViewById(R.id.phoneNumber? );? final?Button?callButton?=?(Button)?findViewById(R.id.callButton);? callButton.setOnClickListener(new?Button.OnClickListener()?{? public?void?onClick(View?v){? Intent?CallIntent?=?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