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

StartActivity 질문입니다.

0 추천

Main Activity에서 StartActivity로 로딩화면으로 쓰일 Activity를 부르고 

그화면이 3초동안 보여지고 finish(); 되고 

다시 MainActivity로 와서 preferences값에 따라 다른 Activity로 자동으로 넘어가게 하고 싶은데요 

 

 @Override
   protected void onCreate(Bundle savedInstanceState) {
       super.onCreate(savedInstanceState);  
       startActivity(new Intent(this,  SplashActivity.class));
       startActivity(new Intent(this,  seoul.class));
 
보이는 것처럼 메인에서 startActivity를 2개쓰게되면 밑에꺼만 인식되는거 같던데... 
 
위에서 말한 것처럼 메인에서 로딩화면 Activity를 호출하고 종료후에 다시 main으로 와서 다른 Activity로 
 
자동으로 넘기려면 어떻게 해야할까요 ? 
빙빙파 (400 포인트) 님이 2014년 6월 20일 질문

2개의 답변

0 추천

MainActivity에서 로딩화면으로 쓰일 LoadingActivity를 부르고

그 LoadingActivity에서 3초후에 finish와 함께 preferences값을 읽어들여서 다른Activity를 실행하세요.

마피 (2,970 포인트) 님이 2014년 6월 20일 답변
package com.example.genotech_subway;

import android.app.Activity;
import android.content.Context;
import android.content.Intent;
import android.content.SharedPreferences;
import android.os.Bundle;
import android.os.Handler;
import android.os.Message;
public class SplashActivity extends Activity {
    SharedPreferences settings;
   
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.sp_act);
        settings=getSharedPreferences("counter",MODE_PRIVATE);
         String text=settings.getString("cnt","");
         if(text.equals("1"))
         {
             startActivity(new Intent(this, seoul.class));
             finish();
         }
         else if(text.equals("2"))
         {
             startActivity(new Intent(this, busan.class));
             finish();
         }
         else if(text.equals("3"))
         {
             startActivity(new Intent(this, daegu.class));
             finish();
         }
         else if(text.equals("4"))
         {
             startActivity(new Intent(this, gwangju.class));
             finish();
         }
         else if(text.equals("5"))
         {
             startActivity(new Intent(this, daejeon.class));
             finish();
         }
         else
         {
        Handler handler = new Handler () {
            @Override
            public void handleMessage(Message msg) {           
                finish();
            }
        };
        handler.sendEmptyMessageDelayed(0, 3000);
        }
    }
}

로딩화면에서 이와같이 하니깐 다음 실행부턴 로딩화면이 뜨질 않는데
이유를 잘모르겠네요
startActivity를 바로해주니깐요. 그이후에 3초이후에 또 finish하는부분이 있는데... 그 3초이후에 하는부분에서 sharedPref를 이용해서 start해줘야해요.
0 추천
startActivityForResult()

onActivityResult()를 이용하시면 되여.
여룽이 (4,750 포인트) 님이 2014년 6월 20일 답변
...