我想通过检查onCreate活动中的某些条件来动态更改我的UI。但是我的应用程序崩溃了。
@Override
protected void onCreate(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.busdetail);
Intent i=getIntent();
String s=i.getStringExtra("fname");
Log.d("ssssss: ",s);
if(s=="itemName1")
{
for(int k=0;k<itemName1.length;k++)
{
arrayk[k]=itemName1[k];
}
}
CustomList adapter = new CustomList(this, arrayk, imageId);
list = (ListView) findViewById(R.id.list);
list.setAdapter(adapter);
list.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
//String selectedItem = itemName[+position];
// Toast.makeText(getApplicationContext(),selectedItem,Toast.LENGTH_LONG).show();
Intent intent = new Intent(BusDetail.this, AddComment.class);
startActivity(intent);
}
});
}
此处if (s=="itemName1")
然后我将itemName1
复制到arrayk中。 itemName1和arrayk都是字符串数组。但是当我点击一个项目时,我的应用程序崩溃了。当我避免条件阻止时,我的应用程序运行良好。
答案 0 :(得分:1)
两件事。
首先,要比较String
,请不要使用==
!您必须比较String
的值,而不是对象本身。您的情况现在错了... ==
比较对象引用但不比较内容。
使用以下条件:if(s.equals("itemName1"))
如果你想忽略这个案子,请使用equalsIgnoreCase("itemName1")
。
然后请记住,在onCreate
期间,您的用户界面尚未就绪。如果您要在用户界面中进行任何更改,请在onCreateView
/////////////////////////////////////////////// ///////////
onCreateView
正在以这种方式工作:
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState)
{
View mainview = inflater.inflate(R.layout.yourlayout, container, false);
//mainview is your main view, use it to find your elements, assign them listeners, change text, attributes, etc
return mainview; //you have to return this view
}
它基本上像onCreate一样工作,除了这是您必须管理链接到您的视图和UI的所有内容。它也是你必须膨胀你需要的视图,并返回它。