2013-03-19 2 views
0

Я создал заставку, которая загружает (всплеск) активность, а затем запускает другое действие и работает отлично. (Я приложил его ниже - это называется SPLASH 1)Всплеск экрана Причины MenuItems не отображаются

Я создал еще один заставку, чтобы заменить этот, который должен запускаться только один раз, - тогда после создания логического SharedPreferences он должен загрузить другое действие. Все кажется прекрасным с этим, но теперь, когда он загружает новую активность, ни один из элементов меню не появляется. Я не знаю, что изменилось в SPLASH 2, но что-то там вызывает то, что MenuItems не появляется после того, как он загружает то же самое действие. SPLASH 1 делает (NEWCORE.JAVA)

Я действительно не уверен, что происходит здесь - любая помощь очень ценится!

(пожалуйста, дайте мне знать, если какая-либо дополнительная информация необходима)

SPLASH 1. (РАБОТУ)

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 (НЕ РАБОТАЕТ - ПРИЧИНЫ MenuItems не появляться на активности она загружает)

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 (Connected обеими заставок - только отсутствующие MenuItems при использовании 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 и просто расширяет вашу предыдущую деятельность с помощью меню.

+0

Ok - это будет выглядеть примерно так? https://docs.google.com/document/d/18dHDs38F-Broy9DmNl80omanC7WZjYmXQoqTj1zTiMU/edit P.S. ЕСЛИ это правильно - можете ли вы показать мне, как я могу продлить его в других моих действиях? (Я довольно новичок в разработке Android), я извиняюсь) – NoobNinja

+0

Почему второй экран заставки заставляет их не быть видимыми? (Мне нужно разные пункты меню для каждого действия, поэтому я не уверен, что будет сохранено их все в одном месте. Я бы хотел, чтобы они были определены в каждом действии. Можно ли изменить SPLASH SCREEN 2 для вызова определенных элементов MenuItems в NEWCORE.JAVA?) – NoobNinja

+0

Не странно ли, что загрузка NEWCORE.JAVA непосредственно через первый заставку позволяет отображать пункты меню, но при загрузке NEWCORE.JAVA с использованием второго экрана заставки (который просто выбирает NEWCORE.JAVA if SharedPreference истинно) заставляет их не быть видимыми при вызове точно такой же активности (NEWCORE.JAVA) – NoobNinja

0

В Всплеск 2 поставил

SetContentView(R.layout.country_list); 

чуть ниже super.onCreate(savedInstanceState);

Смежные вопросы