无法在android主要活动中使用不同布局的组件

时间:2015-07-05 18:01:06

标签: java android xml android-layout

在我的活动中,我显示了splash(splash.xml)屏幕5秒,然后我将内容视图更改为主要活动(activity_main)的实际布局。但是,当我尝试使用我的主要活动布局(activity_main)中的组件时,我得到空指针异常。

主要活动是

Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);
toolbar.showOverflowMenu();

当我使用任何这些组件时,我得到空指针异常。

我的启动画面布局文件splash.xml

public class MainActivity extends ActionBarActivity {
ProgressBar progressBar2;
EditText userName,password;
static String url;
JSONObject reader;
@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.splash);
    new CountDownTimer(5000,1000){
        @Override
        public void onTick(long millisUntilFinished){}

        @Override
        public void onFinish(){
            //set the new Content of your activity
            MainActivity.this.setContentView(R.layout.activity_main);

        }
    }.start();
    progressBar2=(ProgressBar)findViewById(R.id.progressBar2);
    progressBar2.setVisibility(View.GONE);
    userName=(EditText)findViewById(R.id.userName);
    password=(EditText)findViewById(R.id.password);
}
}

和主要布局(activity_main.xml是)

            <RelativeLayout 
            android:layout_height="match_parent"
            android:background="@drawable/ic_launcher_web">
            <ProgressBar
                style="?android:attr/progressBarStyleLarge"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:id="@+id/progressBar"
                android:layout_alignParentBottom="true"
                android:layout_centerHorizontal="true"
                android:layout_marginBottom="111dp"
                />
        </RelativeLayout>

1 个答案:

答案 0 :(得分:0)

因为你的

    @Override
    public void onFinish(){
        //set the new Content of your activity
        MainActivity.this.setContentView(R.layout.activity_main);

    }

将在5秒后执行。

设置布局

        setContentView(R.layout.activity_main);

之前progressBar2=(ProgressBar)findViewById(R.id.progressBar2);