2016-01-20 33 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

相關問題