android id是唯一的吗中@id和@+id的区别

Android中多个Activity可以共用id吗? - 开源中国社区
当前访客身份:游客 [
当前位置:
菜鸟在学习Android的时候发现的一个问题
新建一个Activity,会自动生成一个相应的布局文件,如:
&FrameLayout xmlns:android=&/apk/res/android&
xmlns:tools=&/tools&
android:id=&@+id/container&
android:layout_width=&match_parent&
android:layout_height=&match_parent&
tools:context=&cn.cyk.learn.SecondActivity&
tools:ignore=&MergeRootFrame& /&
android:id=&@+id/container&
在各个Activity中都是一样的,是不是说他们都共用一个id?如果是的话,他们之间又是怎么区分的呢?&
共有6个答案
<span class="a_vote_num" id="a_vote_num_
引用来自“蜗牛snail”的评论不同的布局文件中可以允许出现相同的id,但是同一个布局xml文件中,不允许出现相同的id,至于你在Activity中或者Fragment等通过findViewById()来取得Widget的话,它只会从当前布局中查找id,如果没有会包空指针当前布局是指setContentView(R.layout.activity_xxx);中设定的布局吗?
<span class="a_vote_num" id="a_vote_num_
不同的布局文件中可以允许出现相同的id,但是同一个布局xml文件中,不允许出现相同的id,至于你在Activity中或者Fragment等通过findViewById()来取得Widget的话,它只会从当前布局中查找id,如果没有会包空指针
<span class="a_vote_num" id="a_vote_num_
<span class="a_vote_num" id="a_vote_num_
view的id 是相对于 父布局 的,
就像有很多重名的人,但是他们的爹不同
<span class="a_vote_num" id="a_vote_num_
写android跟写html里的js区别是什么?
<span class="a_vote_num" id="a_vote_num_
每个Activity对应的视图结构相当于html的DOM树,不同的Activity视图(html页面)中出现相同的id不会有干扰~
更多开发者职位上
有什么技术问题吗?
类似的话题Android中@id与@+id区别_百度文库
两大类热门资源免费畅读
续费一年阅读会员,立省24元!
Android中@id与@+id区别
上传于||暂无简介
阅读已结束,如果下载本文需要使用0下载券
想免费下载更多文档?
定制HR最喜欢的简历
你可能喜欢&requestCode:
& & & & & &用于判断传过来的数据来自于哪个activity
resultCode:
& & & & & &当一个Activity有多种数据传过来时,resultCode就可以用来判断传过来的数据的类型
下面用一个例子说明吧,首先看结果
& &三个按钮两个编辑框
& 点击单选联系人与单选回复有两个activity,分别选联系人与回复,这样就可以利用&requestCode来判断数据来自于那个activity
& 点击同时选,会出现两列数据,一列联系人,一列回复。选好联系人会跳转到上一个activity,把联系人填好,然后再点击按钮选好回复,自动跳转到上一个activity填好回复。(并不能算真正的同时选,只是为了理解resultCode的用法,来判断传过来的是联系人还是回复)
下面上代码吧:
# SimperActivity.java(MainActivity.java)
1 package com.example.lynn.adapter.I
3 import android.app.A
4 import android.content.I
5 import android.os.B
6 import android.view.V
7 import android.widget.B
8 import android.widget.EditT
10 import com.example.lynn.adapter.R;
12 public class SimperActivity extends Activity {
final int NAME = 1;
final int SMS = 2;
//三个Activity的请求码
final int NAME_ACTIVITY = 0;
final int SMS_ACTIVITY = 3;
final int SELECT_ACTIVITY = 4;
private Button selectN
private Button selectS
EditText nameT
EditText smsT
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.simper_layout);
select = (Button) findViewById(R.id.select);
selectName = (Button) findViewById(R.id.singer_name);
selectSms = (Button) findViewById(R.id.singer_sms);
nameText = (EditText) findViewById(R.id.name);
smsText = (EditText) findViewById(R.id.sms);
select.setOnClickListener(new View.OnClickListener() {
public void onClick(View v) {
Intent intent = new Intent(SimperActivity.this, SelectActivity.class);
startActivityForResult(intent, SELECT_ACTIVITY);
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
switch (requestCode) {
case (NAME_ACTIVITY):
n = data.getStringExtra(&name&);
nameText.setText(n);
case (SMS_ACTIVITY):
s = data.getStringExtra(&sms&);
smsText.setText(s);
case (SELECT_ACTIVITY): {
if (resultCode == NAME) {
n = data.getStringExtra(&name&);
nameText.setText(n);
} else if (resultCode == SMS) {
s = data.getStringExtra(&sms&);
smsText.setText(s);
//单选联系人的点击事件
public void toSelectName(View v) {
Intent intent = new Intent(SimperActivity.this, SelectPersonActivity.class);
startActivityForResult(intent, NAME_ACTIVITY);
//单选回复的点击事件
public void toSelectSms(View v) {
Intent intent = new Intent(SimperActivity.this, SelectSmsActivity.class);
startActivityForResult(intent, SMS_ACTIVITY);
simper_layout.xml
1 &?xml version=&1.0& encoding=&utf-8&?&
2 &LinearLayout xmlns:android=&/apk/res/android&
android:orientation=&vertical& android:layout_width=&match_parent&
android:layout_height=&match_parent&&
&TableLayout
android:layout_width=&match_parent&
android:layout_height=&wrap_content&
&TableRow&
android:layout_width=&0dp&
android:layout_height=&wrap_content&
android:layout_weight=&1&
android:text=&@string/name&
android:id=&@+id/name&
android:labelFor=&@id/name&
android:inputType=&text&
android:layout_width=&0dp&
android:layout_height=&wrap_content&
android:layout_weight=&5&
24 &/TableRow&
&TableRow&
android:layout_width=&0dp&
android:layout_height=&wrap_content&
android:layout_weight=&1&
android:text=&@string/sms&
android:id=&@+id/sms&
android:labelFor=&@id/sms&
android:inputType=&text&
android:layout_width=&0dp&
android:layout_height=&wrap_content&
android:layout_weight=&5&
&/TableRow&
&/TableLayout&
android:id=&@+id/select&
android:layout_width=&wrap_content&
android:layout_height=&wrap_content&
android:text=&同时选好&
android:id=&@+id/singer_name&
android:layout_width=&wrap_content&
android:layout_height=&wrap_content&
android:text=&单选联系人&
android:onClick=&toSelectName&
android:id=&@+id/singer_sms&
android:layout_width=&wrap_content&
android:layout_height=&wrap_content&
android:text=&单选回复&
android:onClick=&toSelectSms&
64 &/LinearLayout&
SelectActivity.java(同时选)
1 package com.example.lynn.adapter.I
3 import android.app.A
4 import android.content.I
5 import android.os.B
6 import android.view.V
7 import android.widget.AdapterV
8 import android.widget.ArrayA
9 import android.widget.ListV
10 import android.widget.T
12 import com.example.lynn.adapter.R;
14 import java.util.ArrayL
15 import java.util.L
18 public class SelectActivity extends Activity
private List&String& nameL
private List&String& smsL
private ListView nameV
private ListView smsV
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.select_layout);
nameView= (ListView) findViewById(R.id.allpersons);
smsView= (ListView) findViewById(R.id.allsms);
addContent();
nameView.setAdapter(new ArrayAdapter&String&(this,
android.R.layout.simple_list_item_1,nameList));
smsView.setAdapter(new ArrayAdapter&String&(this,
android.R.layout.simple_list_item_1,smsList));
nameView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
public void onItemClick(AdapterView&?& parent, View view, int position, long id) {
Intent data=new Intent();
data.putExtra(&name&, nameList.get(position));
setResult(1,data);
Toast.makeText(SelectActivity.this, &您选择了&+nameList.get(position)+& !&, Toast.LENGTH_LONG).show();
smsView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
public void onItemClick(AdapterView&?& parent, View view, int position, long id) {
Intent data=new Intent();
data.putExtra(&sms&, smsList.get(position));
setResult(2,data);
//添加数据
public void addContent(){
nameList=new ArrayList&&();
nameList.add(&lynn&);
nameList.add(&jack&);
nameList.add(&cat&);
smsList=new ArrayList&&();
smsList.add(&waiting...&);
smsList.add(&I am busy...&);
smsList.add(&hey,man....&);
select_layout.xml
1 &?xml version=&1.0& encoding=&utf-8&?&
2 &LinearLayout xmlns:android=&/apk/res/android&
android:layout_width=&match_parent&
android:layout_height=&match_parent&
android:orientation=&horizontal&&
&LinearLayout
android:layout_width=&0dp&
android:layout_height=&wrap_content&
android:layout_weight=&1&
android:orientation=&vertical&&
android:layout_width=&wrap_content&
android:layout_height=&wrap_content&
android:text=&联系人;&
android:textSize=&24dp& /&
android:id=&@+id/allpersons&
android:layout_width=&wrap_content&
android:layout_height=&wrap_content& /&
&/LinearLayout&
&LinearLayout
android:layout_width=&0dp&
android:layout_height=&wrap_content&
android:layout_weight=&1&
android:orientation=&vertical&&
android:layout_width=&wrap_content&
android:layout_height=&wrap_content&
android:text=&回复:&
android:textSize=&24dp& /&
android:id=&@+id/allsms&
android:layout_width=&wrap_content&
android:layout_height=&wrap_content&
&/LinearLayout&
44 &/LinearLayout&
SelectSmsActivity.java(单选回复)
1 package com.example.lynn.adapter.I
3 import android.app.A
4 import android.content.I
5 import android.os.B
6 import android.view.V
7 import android.widget.AdapterV
8 import android.widget.ArrayA
9 import android.widget.ListV
11 import com.example.lynn.adapter.R;
* Created by Administrator on .
16 public class SelectSmsActivity extends Activity {
private String[] allsms={&I am busy....&,&waiting....&,&hey,man..&};
private ListView smsV
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.allsms_layout);
smsView= (ListView) findViewById(R.id.the_sms);
smsView.setAdapter(new ArrayAdapter&String&(this,android.R.layout.simple_list_item_1,allsms));
smsView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
public void onItemClick(AdapterView&?& parent, View view, int position, long id) {
Intent data=new Intent();
data.putExtra(&sms&,allsms[position]);
setResult(3,data);
SelectPersonActivity.java(单选联系人)
1 package com.example.lynn.adapter.I
3 import android.app.A
4 import android.content.I
5 import android.os.B
6 import android.view.V
7 import android.widget.AdapterV
8 import android.widget.ArrayA
9 import android.widget.ListV
11 import com.example.lynn.adapter.R;
13 import java.util.L
16 public class SelectPersonActivity extends Activity{
private String[] allNames=new String[]{&lynn&,&jack&,&cat&};
private ListView nameV
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.allnames_layout);
nameView= (ListView) findViewById(R.id.the_name);
nameView.setAdapter(new ArrayAdapter&String&(this,android.R.layout.simple_list_item_1,allNames));
nameView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
public void onItemClick(AdapterView&?& parent, View view, int position, long id) {
Intent data=new Intent();
data.putExtra(&name&,allNames[position]);
setResult(0,data);
说明:以上的两个Activity的布局文件都是只有一个listView,故此处不再给出,有不对的地方多多指教!

我要回帖

更多关于 android device id 的文章

 

随机推荐