2016-01-20 73 views
0

我想通过检查我的onCreate活动中的某些条件来动态更改我的UI。但我的应用程序崩溃。为什么我的应用程序崩溃时,如果条件在我oncreate?

@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都是字符串数组。但是当我点击一个项目时,我的应用程序崩溃。当我避免条件阻塞时,我的应用程序运行良好。

+1

请更具体。什么错误消息/调用堆栈被抛出“崩溃”? –

+1

不要那样做:'s ==“itemName1”',用's.equals(“itemName1”)'代替。什么是'itemName1'?它在哪里初始化? 'arrayk'的同样问题。 – jhamon

+0

if(i!= null)... if(s!= null) –

回答

1

两件事。

首先,要比较一个String,请不要使用==!您必须比较String的值,而不是对象本身。您的情况现在是错误的... ==比较对象引用,但不是内容。

使用以下条件:if(s.equals("itemName1")) 或使用equalsIgnoreCase("itemName1")如果您要忽略该情况。

然后请记住,在onCreate期间,您的用户界面尚未准备好。如果您在UI中有任何更改,请在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除外,这是你必须管理链接到你的意见和你的用户界面的一切。它也在那里,你必须夸大你需要的视图,并返回它。

+0

我使用if(s.equals(“itemName1”))...但这次应用程序崩溃 –

+0

如何在此代码中使用onCreateView解释。 –

+0

我编辑了我的帖子:) – Virthuss

相关问题