마스터Q&A 안드로이드는 안드로이드 개발자들의 질문과 답변을 위한 지식 커뮤니티 사이트입니다. 안드로이드펍에서 운영하고 있습니다. [사용법, 운영진]

스플래쉬 이미지 질문이요!!!!!!!!

0 추천
스플래쉬를 넣고

실행을 하면

 

메인xml이 잠깐 보여지고 스플래쉬xml이 보여지는데요

메인xml화면이 안나오게 할 수 없나요?
송이송이 (830 포인트) 님이 2014년 7월 31일 질문

1개의 답변

0 추천
처음부터 스플래시 xml을 보이게 하면 되지 않나요?
익명사용자 님이 2014년 7월 31일 답변
protected void onCreate(Bundle savedInstanceState) {
        startActivity(new Intent(this, splash.class));
        super.onCreate(savedInstanceState);

        this.setContentView(R.layout.activity_main);

이렇게 해놨는데 그러더라고요
1. super.onCreate(savedInstanceState); 앞에는 아무것도 넣지 마세요. 정상동작하지 않을 수 있습니다.
2. this.setContentView(R.layout.activity_main);를 호출하지 말고 finish() 하세요.

구조가 좀 이상하군요.
splash 액티비티를 실행하고, spash 액티비티가 main 액티비티를 실행하도록 순서를 바꾸어 보세요.
07-31 15:42:21.402: E/AndroidRuntime(15265): FATAL EXCEPTION: main
07-31 15:42:21.402: E/AndroidRuntime(15265): Process: net.kirauks.andwake, PID: 15265
07-31 15:42:21.402: E/AndroidRuntime(15265): java.lang.RuntimeException: Unable to start activity ComponentInfo{net.kirauks.andwake/net.kirauks.andwake.MainActivity}: java.lang.NullPointerException
07-31 15:42:21.402: E/AndroidRuntime(15265):     at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2203)
07-31 15:42:21.402: E/AndroidRuntime(15265):     at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2253)
07-31 15:42:21.402: E/AndroidRuntime(15265):     at android.app.ActivityThread.access$800(ActivityThread.java:142)
07-31 15:42:21.402: E/AndroidRuntime(15265):     at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1203)
07-31 15:42:21.402: E/AndroidRuntime(15265):     at android.os.Handler.dispatchMessage(Handler.java:102)
07-31 15:42:21.402: E/AndroidRuntime(15265):     at android.os.Looper.loop(Looper.java:136)
07-31 15:42:21.402: E/AndroidRuntime(15265):     at android.app.ActivityThread.main(ActivityThread.java:5120)
07-31 15:42:21.402: E/AndroidRuntime(15265):     at java.lang.reflect.Method.invokeNative(Native Method)
07-31 15:42:21.402: E/AndroidRuntime(15265):     at java.lang.reflect.Method.invoke(Method.java:515)
07-31 15:42:21.402: E/AndroidRuntime(15265):     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:792)
07-31 15:42:21.402: E/AndroidRuntime(15265):     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:608)
07-31 15:42:21.402: E/AndroidRuntime(15265):     at dalvik.system.NativeStart.main(Native Method)
07-31 15:42:21.402: E/AndroidRuntime(15265): Caused by: java.lang.NullPointerException
07-31 15:42:21.402: E/AndroidRuntime(15265):     at net.kirauks.andwake.MainActivity.onCreate(MainActivity.java:184)
07-31 15:42:21.402: E/AndroidRuntime(15265):     at android.app.Activity.performCreate(Activity.java:5275)
07-31 15:42:21.402: E/AndroidRuntime(15265):     at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1087)
07-31 15:42:21.402: E/AndroidRuntime(15265):     at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2167)
07-31 15:42:21.402: E/AndroidRuntime(15265):     ... 11 more


강종..
net.kirauks.andwake.MainActivity.onCreate(MainActivity.java:184)
이 라인에는 뭐가 있나요?
finish() 호출뒤에는 아무것도 실행아면 안됩니다.
protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
    //    this.setContentView(R.layout.splash);
        finish();

        final ActionBar actionBar = this.getActionBar();
        actionBar.setNavigationMode(ActionBar.NAVIGATION_MODE_TABS);
        actionBar.setDisplayShowTitleEnabled(false);
        actionBar.setIcon(getTitleColor());

        // 액션바 색상
    //    actionBar.setBackgroundDrawable(new ColorDrawable(Color.parseColor("#589cd0")));

        actionBar.setBackgroundDrawable(new ColorDrawable(Color
                .parseColor("#0100FF")));
       
        // 탭 색상
        actionBar.setStackedBackgroundDrawable(new ColorDrawable(Color
                .parseColor("#0100FF")));

        this.mSectionsPagerAdapter = new SectionsPagerAdapter(
                this.getSupportFragmentManager());

        this.mViewPager = (ViewPager) this.findViewById(R.id.pager);
        this.mViewPager.setAdapter(this.mSectionsPagerAdapter);
        this.mViewPager
                .setOnPageChangeListener(new ViewPager.SimpleOnPageChangeListener() {
                    @Override
                    public void onPageSelected(int position) {
                        actionBar.setSelectedNavigationItem(position);
                    }
                });

        for (int i = 0; i < this.mSectionsPagerAdapter.getCount(); i++) {
            actionBar.addTab(actionBar.newTab()
                    .setText(this.mSectionsPagerAdapter.getPageTitle(i))
                    .setTabListener(this));

        }
    }

이거고요
184 줄에는
        this.mViewPager.setAdapter(this.mSectionsPagerAdapter);
입니다
올리신 코드가 main액티비티인가요, splash액티비티 인가요?

main액티비티라고 가정하고 말씀드리면,
super.onCreate(savedInstanceState); 뒤에
startActivity(new Intent(this, splash.class)); 를 호출하고,
finish() 뒤에 return을 넣어서 종료하세요.

setContentView을 안했으니까 findViewById를 호출하면 당연히 null이 나옵니다.
메인입니다
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        startActivity(new Intent(this, splash.class));
        this.setContentView(R.layout.activity_main);
        finish();
       
이렇게 하는데
뭘리턴해야되나요?
finish() 아래에 return ; 한 줄 넣으세요.
메인activity에서 this.setContentView(R.layout.activity_main); 를 호출하면 메인 화면이 먼저 보이는 걸 피할 수 없습니다.
위에 말씀드린대로 splash 액티비티를 실행하고, spash 액티비티가 main 액티비티를 실행하도록 순서를 바꾸세요.
그런데 리턴을 넣으면 그 밑에 코드가 사용할 수 없는 코드라고 나옵니다..
return 을 넣으면 그 아래의 코드는 실행이 되지 않으니 당연히 그렇게 경고가 나옵니다.
return 아래의 코드는 모두 주석처리하세요.
음 감사합니다!!!!!!
...