当前位置: 代码迷 >> Android >> Android开发从入门到精通(七) _7
  详细解决方案

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

热度:35   发布时间:2016-05-01 20:24:02.0
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

  相关解决方案