为什么我的应用程序在我的oncreate中使用if条件时崩溃了?

时间:2016-01-20 08:22:18

标签: android android-layout android-intent

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

1 个答案:

答案 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的所有内容。它也是你必须膨胀你需要的视图,并返回它。