2013-03-19 1 views
0

(스플래시) 작업을로드 한 다음 다른 작업을 시작하는 스플래시 화면을 작성했습니다. (아래에 첨부했습니다. SPLASH 1이라고합니다.)스플래시 화면으로 인해 MenuItems이 표시되지 않습니다.

한 번만 실행해야하는이 스플래시 화면을 대체하기 위해 다른 스플래시 화면을 만들었습니다. SharedPreferences 부울을 생성 한 후 다른 활동을로드해야합니다. 이것으로 모든 것이 잘 보이지만 새로운 활동을로드 할 때 아무 메뉴도 나타나지 않습니다. SPLASH 2에서 무엇이 바뀌 었는지 전혀 알지 못합니다. 그러나 SPLASH 1이 정확히 동일한 작업을로드 한 후에는 MenuItems이 나타나지 않습니다. (NEWCORE.JAVA)

정말 무슨 일이 일어나는지 잘 모르겠습니다. 여기 - 어떤 도움이라도 대단히 감사합니다!

SPLASH 1. (WORKING)을 (추가 정보가 필요한 경우 알려 주시기 바랍니다)

import android.app.Activity; 
import android.os.Bundle; 
import android.os.Handler; 
import android.content.Intent; 
import com.nfc.linkingmanager.R; 

public class SplashScreen extends Activity { 

private boolean mIsBackButtonPressed; 
private static final int SPLASH_DURATION = 1000; 

public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 

    setContentView(R.layout.splash_screen); 

    Handler handler = new Handler(); 

    // run a thread after 2 seconds to start the home screen 
    handler.postDelayed(new Runnable() { 

     @Override 
     public void run() { 

      // make sure we close the splash screen so the user won't come back when it presses back key 

      finish(); 

      if (!mIsBackButtonPressed) { 
       // start the home screen if the back button wasn't pressed already 
       Intent intent = new Intent(SplashScreen.this, NewCore.class); 
       SplashScreen.this.startActivity(intent); 
      } 

     } 

    }, SPLASH_DURATION); // time in milliseconds (1 second = 1000 milliseconds) until the run() method will be called 

} 

@Override 
public void onBackPressed() { 

    // set the flag to true so the next activity won't start up 
    mIsBackButtonPressed = true; 
    super.onBackPressed(); 

} 
} 

SPLASH 2 (작동하지 않는이 -이로드 활동에 표시되지 메뉴 아이템을 일으킴)

import android.app.Activity; 
import android.os.Bundle; 
import android.os.Handler; 
import android.content.Intent; 
import com.nfc.linkingmanager.R; 
import android.content.SharedPreferences; 
import java.lang.Object; 
import android.preference.PreferenceManager; 


public class SplashScreen extends Activity 
{ 
private Handler handler = new Handler() 
{ 
    public void handleMessage(Message msg) 
    { 
     Intent i = new Intent(SplashScreen.this, AppActivity.class); 
     SplashScreen.this.startActivity(i); 
          this.finish(); 
    } 
}; 

protected void onCreate(Bundle savedInstanceState) 
{ 
    super.onCreate(savedInstanceState); 

    SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(this); 
    if(!prefs.getBoolean("first_time", false)) 
    { 
     SharedPreferences.Editor editor = prefs.edit(); 
     editor.putBoolean("first_time", true); 
     editor.commit(); 
     Intent i = new Intent(SplashScreen.this, NewCore.class); 
     this.startActivity(i); 
          this.finish(); 
    } 
    else 
    { 
     this.setContentView(R.layout.country_list); 
     handler.sendEmptyMessageDelayed(0, 2000); 
    } 

} 
} 

NEWCORE.JAVA -

,174 (모두 스플래쉬 화면에 의해 연결이 SPLASH 2를 사용하는 경우에만 메뉴 아이템 누락)
import android.os.AsyncTask; 
import android.os.Bundle; 
import android.app.ListActivity; 
import android.content.Intent; 
import android.database.Cursor; 
import android.view.Menu; 
import android.view.MenuInflater; 
import android.view.MenuItem; 
import android.view.View; 
import android.widget.AdapterView; 
import android.widget.CursorAdapter; 
import android.widget.ListView; 
import android.widget.SimpleCursorAdapter; 
import android.widget.AdapterView.OnItemClickListener; 

public class NewCore extends ListActivity { 

public static final String ROW_ID = "row_id"; 
private ListView conListView; 
private CursorAdapter conAdapter; 

@Override 
public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    conListView=getListView(); 
    conListView.setOnItemClickListener(viewConListener); 

    // map each name to a TextView 
    String[] from = new String[] { "name" }; 
    int[] to = new int[] { R.id.countryTextView }; 
    conAdapter = new SimpleCursorAdapter(NewCore.this, R.layout.country_list, null, from, to); 
    setListAdapter(conAdapter); // set adapter 
} 


@Override 
protected void onResume() 
{ 
    super.onResume(); 
    new GetContacts().execute((Object[]) null); 
} 


@Override 
protected void onStop() 
{ 
    Cursor cursor = conAdapter.getCursor(); 

    if (cursor != null) 
     cursor.deactivate(); 

    conAdapter.changeCursor(null); 
    super.onStop(); 
}  


private class GetContacts extends AsyncTask<Object, Object, Cursor> 
{ 
    DatabaseConnector dbConnector = new DatabaseConnector(NewCore.this); 

    @Override 
    protected Cursor doInBackground(Object... params) 
    { 
     dbConnector.open(); 
     return dbConnector.getAllContacts(); 
    } 

    @Override 
    protected void onPostExecute(Cursor result) 
    { 
     conAdapter.changeCursor(result); // set the adapter's Cursor 
     dbConnector.close(); 
    } 
} 

@Override 
public boolean onCreateOptionsMenu(Menu menu) 
{ 
    super.onCreateOptionsMenu(menu); 
    MenuInflater inflater = getMenuInflater(); 
    inflater.inflate(R.menu.country_menu, menu); 
    return true; 
} 

@Override 
public boolean onOptionsItemSelected(MenuItem item) 
{ 
    Intent addContact = new Intent(NewCore.this, NewCore.class); 
    startActivity(addContact); 
    return super.onOptionsItemSelected(item); 
} 

OnItemClickListener viewConListener = new OnItemClickListener() 
{ 
    public void onItemClick(AdapterView<?> arg0, View arg1, int arg2,long arg3) 
    {   
     Intent viewCon = new Intent(NewCore.this, NewCore.class); 
     viewCon.putExtra(ROW_ID, arg3); 
     startActivity(viewCon); 
    } 
};  

} 

답변

0

Android 활동 클래스를 확장하는 새로운 활동을 만들고 거기에 메뉴 처리를 배치하십시오. 그런 다음 다른 활동에서 새 활동을 확장하여 메뉴 처리가 일관성을 유지하도록합니다. 목록의 경우 ListActivity를 확장하는 두 번째 새로운 활동을 만들거나 ListActivity 코드를 가져 와서 메뉴를 사용하여 이전 활동을 확장 할 수 있습니다. 스플래쉬 2에서

+0

좋아 아래

SetContentView(R.layout.country_list); 

를 넣어 - 그것은 다음과 같이 보일 것인가? https://docs.google.com/document/d/18dHDs38F-Broy9DmNl80omanC7WZjYmXQoqTj1zTiMU/edit P.S. 맞습니까? 내 다른 활동에서 어떻게 확장 할 수 있는지 보여 줄 수 있습니까? (나는 안드로이드 개발에 아주 익숙하다 - 나는 사과한다) – NoobNinja

+0

왜 2 차 스플래시 스크린이 보이지 않게 하는가? (나는 각 Activity마다 다른 MenuItems이 필요하다. 그래서 한 번에 모든 것을 저장하는 것이 효과가 있을지 모르겠다. 나는 각각의 액티비티에 그것들을 정의하고 싶다. 정의 된 MenuItem을 호출하기 위해 SPLASH SCREEN 2를 편집 할 수 있습니까? NEWCORE.JAVA?) – NoobNinja

+0

첫 번째 스플래시 화면을 통해 직접 NEWCORE.JAVA를로드하면 메뉴 항목이 표시되는 것이 이상하지 않습니까?하지만 두 번째 스플래시 화면을 사용하여 NEWCORE.JAVA를로드 할 때 (단순히 NEWCORE.JAVA를 선택하는 경우) SharedPreference가 true 인 경우) 정확하게 동일한 활동 (NEWCORE.JAVA)을 호출 할 때 보이지 않게합니다. – NoobNinja

0

그냥 super.onCreate(savedInstanceState);

관련 문제