Как заставить TabWidget изменить Intents с помощью оператора if - PullRequest
0 голосов
/ 23 марта 2012

В настоящее время мой код загружает TabWidget с 4 вкладками.Первая вкладка указывает на страницу отказа от ответственности, которая также берет имя пользователя из поля edittext и сохраняет его внутри на телефоне.Я хотел бы иметь условие if, которое проверяет, сохранено ли имя пользователя на телефоне, и показывает ли оно пользователю страницу с благодарностью, отличную от оригинальной страницы отказа от ответственности.Я считаю, что мой код не работает, потому что он находится под функцией onCreate и не обновляет ...

    public class TabWidgetActivity extends TabActivity {

    /** Called when the activity is first created. */

    @Override
    public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.main);

    Resources res = getResources(); // Resource object to get Drawables
    TabHost tabHost = getTabHost();  // The activity TabHost
    TabHost.TabSpec spec;  // Reusable TabSpec for each tab
    Intent intent;  // Reusable Intent for each tab


    // Create an Intent to launch an Activity for the tab (to be reused)

    String username = null;  
    String pulledUsername = getPreferences(MODE_PRIVATE).getString("username",username);

    // ******* MAIN PART I'M HAVING TROUBLE WITH ********************************

    if (pulledUsername != null){
    intent = new Intent().setClass(this, HomeActivity.class);
    }
    else {
    intent = new Intent().setClass(this, DisclaimerActivity.class);
    }

    // ^^^^^^^^^^^^^^^ MAIN PART I'M HAVING TROUBLE WITH ^^^^^^^^^^^^^^^^^^^^^^

    // Initialize a TabSpec for each tab and add it to the TabHost

    spec = tabHost.newTabSpec("home").setIndicator("Home",
                      res.getDrawable(R.drawable.ic_tab_home))
                  .setContent(intent);
    tabHost.addTab(spec);

    // Do the same for the other tabs

    intent = new Intent().setClass(this, ShowMapActivity.class);
    spec = tabHost.newTabSpec("map").setIndicator("Map",
                      res.getDrawable(R.drawable.ic_tab_map))
                  .setContent(intent);
    tabHost.addTab(spec);

    intent = new Intent().setClass(this, SurveyActivity.class);
    spec = tabHost.newTabSpec("survey").setIndicator("Survey",
                      res.getDrawable(R.drawable.ic_tab_web))
                  .setContent(intent);
    tabHost.addTab(spec);

    intent = new Intent().setClass(this, AnalysisActivity.class);
    spec = tabHost.newTabSpec("analysis").setIndicator("Analysis",
                      res.getDrawable(R.drawable.ic_tab_analysis))
                  .setContent(intent);
    tabHost.addTab(spec);

    tabHost.setCurrentTab(2);
     }
    }

1 Ответ

0 голосов
/ 23 марта 2012

Можете ли вы быть немного более ясным о том, что "не работает"?

Устанавливаете ли вы имя пользователя в настройках в этом упражнении?Если нет, то вы должны использовать getSharedPreferences(), поскольку предпочтения сохраняются для каждого вида деятельности.

при записи имени пользователя в заявлении об отказе от ответственности

  SharedPreferences settings = getSharedPreferences("com.blah.application", MODE_PRIVATE);
  SharedPreferences.Editor editor = settings.edit();
  editor.putString("username", username); 
  // Commit the edit!
  editor.apply();

При извлечении имени пользователя в другомактивность:

pulledUsername = getSharedPreferences("com.blah.application", MODE_PRIVATE).getString("username",null)
...