как программно показать и скрыть панель действий в одном действии

Я получил это одно действие, в котором мне нужно скрыть панель действий в интерфейсе входа в систему, а затем после входа в систему отобразится панель действий. если я ставлю getActionBar на основной вид деятельности, это дает мне ошибку.

вот код:

@SuppressLint("NewApi")
public class MainActivity extends Activity {


ViewPager viewPager;
PagerAdapter adapter;
ProgressDialog pDialog;
ImageView imgLogo;
Menu menu1;

ImageView header;
ImageView footer;


int[] bookCover = new int[] { 

                    R.drawable.image1, 
                    R.drawable.image2,
                    R.drawable.image3,

                    };


@SuppressLint("NewApi")
@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    setupFacebookConnect(savedInstanceState);

    imgLogo = (ImageView)findViewById(R.id.logo);
    share = (ImageView) findViewById(R.id.share);

    // Locate the ViewPager in viewpager_main.xml
    viewPager = (ViewPager) findViewById(R.id.pager);
    // Pass results to ViewPagerAdapter Class
    adapter = new ViewPagerAdapter(this, bookCover);
    // Binds the Adapter to the ViewPager
    viewPager.setAdapter(adapter);

    final OnPageChangeListener pageChangeListener = new ViewPager.SimpleOnPageChangeListener() {

        @SuppressLint("NewApi")
        @Override
        public void onPageSelected(int position) {

            final int pos = position;
            share.setOnClickListener(new OnClickListener() {

                @Override
                public void onClick(View v) {

                    switch(pos) {
                    case 0:

                        break;
                    case 1: 

                        break;
                    case 2:

                        break;                                              
                    case 3:

                        break;                                              

                    }

                }
            });
         // When changing pages, reset the action bar actions since they are dependent
         // on which page is currently active. An alternative approach is to have each
         // fragment expose actions itself (rather than the activity exposing actions),
         // but for simplicity, the activity provides the actions in this sample.           
        invalidateOptionsMenu();

        }

    };      
    viewPager.setOnPageChangeListener(pageChangeListener);
    pageChangeListener.onPageSelected(0);


    facebook_connect = (Button) findViewById(R.id.facebook_login);
    facebook_connect.setOnClickListener(new OnClickListener() {

        @Override
        public void onClick(View arg0) {
            if (isFacebookConnected()) {
                disConnectFacebook();
            } else {
                connectFacebook();
            }

        }
    });


    // Shared Preferences
    mSharedPreferences = getApplicationContext().getSharedPreferences("MyPref", 0);

}

 @SuppressLint({ "InlinedApi", "NewApi" })
    @Override
    public boolean onCreateOptionsMenu(Menu menu) {

        this.menu1 = menu;

        super.onCreateOptionsMenu(menu);
        getMenuInflater().inflate(R.menu.main, menu);

        menu.findItem(R.id.action_previous).setEnabled(viewPager.getCurrentItem() > 0);

        // Add either a "next" or "finish" button to the action bar, depending on which page
        // is currently selected.
        MenuItem item = menu.add(Menu.NONE, R.id.action_next, Menu.NONE,(viewPager.getCurrentItem() == adapter.getCount() - 1)
                        ? R.string.action_finish
                        : R.string.action_next);

        item.setShowAsAction(MenuItem.SHOW_AS_ACTION_IF_ROOM | MenuItem.SHOW_AS_ACTION_WITH_TEXT);

        return true;

    }

    @Override
    public boolean onOptionsItemSelected(MenuItem item) {

        int itemId = item.getItemId();
        if (itemId == R.id.action_previous) {
            // Go to the previous step in the wizard. If there is no previous step,
            // setCurrentItem will do nothing.
            viewPager.setCurrentItem(viewPager.getCurrentItem() - 1);
            return true;
        } else if (itemId == R.id.action_next) {
            // Advance to the next step0.0 in the wizard. If there is no next step, setCurrentItem
            // will do nothing.
            viewPager.setCurrentItem(viewPager.getCurrentItem() + 1);
            return true;
        }

        return super.onOptionsItemSelected(item);
    }


private Session.StatusCallback statusCallback = new FBSessionStatus();

public void setupFacebookConnect(Bundle savedInstanceState) {
    Settings.addLoggingBehavior(LoggingBehavior.INCLUDE_ACCESS_TOKENS);

    Session session = Session.getActiveSession();
    if (session == null) {
        if (savedInstanceState != null) {
            session = Session.restoreSession(this, null, statusCallback,
                    savedInstanceState);
        }
        if (session == null) {
            session = new Session(this);
        }
        Session.setActiveSession(session);
        if (session.getState().equals(SessionState.CREATED_TOKEN_LOADED)) {
            session.openForRead(new Session.OpenRequest(this)
                    .setCallback(statusCallback));
        }
    }
}

public boolean isFacebookConnected() {
    Session session = Session.getActiveSession();
    return (session.isOpened()) ? true  : false;

}

public void connectFacebook() {
    Session session = Session.getActiveSession();
    if (!session.isOpened() && !session.isClosed()) {
        getActionBar().show();
        session.openForRead(new Session.OpenRequest(this)
                .setCallback(statusCallback));       
    } else {
    Session.openActiveSession(this, true, statusCallback);

    }
}

@Override
public void onStart() {
    super.onStart();
    Session.getActiveSession().addCallback(statusCallback);
}

@Override
public void onStop() {
    super.onStop();
    Session.getActiveSession().removeCallback(statusCallback);
}

@Override
protected void onSaveInstanceState(Bundle outState) {
    super.onSaveInstanceState(outState);
    Session session = Session.getActiveSession();
    Session.saveSession(session, outState);
}

@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
    super.onActivityResult(requestCode, resultCode, data);
    Session.getActiveSession().onActivityResult(this, requestCode,
            resultCode, data);
}

public class FBSessionStatus implements Session.StatusCallback {
     @Override
        public void call(Session session, SessionState state, Exception exception) {
            onSessionStateChange(session, state, exception);
        }
}

public void disConnectFacebook() {
    Session session = Session.getActiveSession();
    if (!session.isClosed()) {
        session.closeAndClearTokenInformation();
        viewPager.setVisibility(View.INVISIBLE);
        MenuItem item1 = menu1.findItem(R.id.action_next);
        item1.setVisible(false);
        MenuItem item2 = menu1.findItem(R.id.action_previous);
        item2.setVisible(false);



        imgLogo.setVisibility(View.VISIBLE);
        //btnLoginTwitter.setVisibility(View.VISIBLE);

        share.setVisibility(View.INVISIBLE);

    }

}

private void onSessionStateChange(Session session, SessionState state, Exception exception) {
        // Check if the user is authenticated and
        // a deep link needs to be handled.
        if (state.isOpened()) {

            MenuItem item1 = menu1.findItem(R.id.action_next);
            item1.setVisible(true);
            MenuItem item2 = menu1.findItem(R.id.action_previous);
            item2.setVisible(true);
            //getActionBar().show();

            share.setVisibility(View.VISIBLE);

            //btnLoginTwitter.setVisibility(View.INVISIBLE);
            //btnShare.setVisibility(View.VISIBLE);     

            viewPager.setVisibility(View.VISIBLE);

            imgLogo.setVisibility(View.INVISIBLE);



        } 
    }

public void shareImage(String name, String caption, String desc, String link, String picture ) {

    Bundle params = new Bundle();
    params.putString("name", name);
    params.putString("caption", caption);
    params.putString("description", desc);
    params.putString("link", link);
    //params.putString("picture", "https://www.facebook.com/photo.php?fbid=10203610233686079&set=a.10203610230766006.1073741829.1523023247&type=1&theater");
    params.putString("picture", picture);

    WebDialog feedDialog = (
        new WebDialog.FeedDialogBuilder(MainActivity.this,
            Session.getActiveSession(),
            params))
        .setOnCompleteListener(new OnCompleteListener() {

            @Override
            public void onComplete(Bundle values,
                FacebookException error) {
                if (error == null) {
                    // When the story is posted, echo the success
                    // and the post Id.
                    final String postId = values.getString("post_id");
                    if (postId != null) {
                        Toast.makeText(MainActivity.this,
                            "Successfuly posted!",
                            Toast.LENGTH_SHORT).show();
                    } else {
                        // User clicked the Cancel button
                        Toast.makeText(MainActivity.this, 
                            "Publish cancelled", 
                            Toast.LENGTH_SHORT).show();
                    }
                } else if (error instanceof FacebookOperationCanceledException) {
                    // User clicked the "x" button
                    Toast.makeText(MainActivity.this, 
                        "Publish cancelled", 
                        Toast.LENGTH_SHORT).show();
                } else {
                    // Generic, ex: network error
                    Toast.makeText(MainActivity.this,
                        "Error posting story", 
                        Toast.LENGTH_SHORT).show();
                }
            }



        })
        .build();
        feedDialog.show();

    }

    @SuppressWarnings("unused")
    private boolean isSubsetOf(Collection<String> subset, Collection<String> superset) {
        for (String string : subset) {
            if (!superset.contains(string)) {
                return false;
            }
        }
        return true;
     }





}
30
задан 19.05.2020, 03:48

7 ответов

Измените свою тему из файла манифеста для желаемого действия ...

 Theme.AppCompat.NoActionBar 
    or 
 Theme.AppCompat.Light.NoActionBar

Программно вы можете невидимую панель инструментов с помощью этой строки кодов

, если вы расширили свое действие действием Затем используйте следующую строку кода для отображения или скрытия панели инструментов

getActionBar().hide();
getActionBar().show();

, а если вы расширяете свою активность из AppCompact Activity, тогда используйте

Для расширения класса Activity:

getActionBar () скрыть (). getActionBar () шоу (). Для расширения класса AppCompatActivity:

getSupportActionBar().hide();
getSupportActionBar().show();
3
ответ дан 19.05.2020, 03:48
  • 1
    @redsquare, Когда я пытаюсь инициировать " slide" событие с $slider.slider (' option' ' slide') .call ($slider); я получаю " event" и " ui" неопределенный. – Jiangong SUN 05.10.2012, 23:20

ActionBar обычно существует вдоль Fragments, поэтому из Activity вы можете скрыть его

getActionbar().hide();
getActionbar().show();

и из Fragment вы можете сделать это

getActivity().getActionbar().hide();
getActivity().getActionbar().show();
2
ответ дан 19.05.2020, 03:49
  • 1
    Уход о @Patonza для предоставления лучшего решения.... sheesh – redsquare 13.05.2010, 18:29

вы можете сохранить его, используя sharedpreference, как показано ниже

public class MainActivity extends Activity 
{
Button btn;

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

    loadActionbar();
    btn=(Button)findViewById(R.id.mainButton1);    
 btn.setOnClickListener(new OnClickListener(){

            @Override
            public void onClick(View p1)
            {
                if(getActionBar().isShowing()==true){
                    getActionBar().hide();
                    saveActionBar();       
                }
                else{
                    getActionBar().show();
                    saveActionBar();
                }
            }
        })


 public void saveActionBar(){
    SharedPreferences pref=PreferenceManager.getDefaultSharedPreferences(getApplicationContext());     
    SharedPreferences.Editor editor=pref.edit();     
    editor.putBoolean("save",getActionBar().isShowing());   
    editor.apply();
}

public void loadActionbar(){
    SharedPreferences pref=PreferenceManager.getDefaultSharedPreferences(getApplicationContext());     
    boolean i=pref.getBoolean("save",getActionBar().isShowing());
    if(i!=true){
        getActionBar().hide();
    }
    else
        getActionBar().show();

}
0
ответ дан 19.05.2020, 03:49
  • 1
    Я продолжал играть вокруг со всем этим и единственное объяснение, которое я видел, был то, что ' slide' событие не было на объекте $slider, а скорее элементе $slider (если это имеет смысл). Сначала необходимо было получить желаемую функцию ' slider' (не $slider), объект тогда называют его с соответствующими параметрами. ' slider' на самом деле несколько элементов DOM, таким образом, нет истинной триггерной зоны для функции. – Wayne Weibel 13.11.2013, 09:24

Очень просто.

getActionbar().hide();
getActionbar().show();
23
ответ дан 19.05.2020, 03:49
  • 1
    Серьезно, jqueryUI является такой полной путаницей, чем-либо немного усовершенствованным и you' ре обратилось к взломам. Не только ползунок любой - целая библиотека является последовательно поганой. – raveren 02.07.2013, 19:22
  • 2
    проблема, когда я использую это, это дает мне javanullpointer. и его твердое для реализации его с viewpager – jovs 19.05.2020, 03:50

Для расширения класса Деятельность :

getActionBar().hide();
getActionBar().show();

Для расширения класса AppCompatActivity :

getSupportActionBar().hide();
getSupportActionBar().show();
61
ответ дан 19.05.2020, 03:50

Вы можете hide/Show статусную строку в Android 4.1 (уровень API 16) и выше, используя hide()/show() функциональность

     // Hide the status bar.
    ActionBar actionBar = getActionBar();
    actionBar.hide();

   // Show the status bar.
    actionBar.show();

. Более подробную информацию вы можете найти здесь https://developer.android.com/training/system-ui/status.html

http://developer.android.com/guide/topics/ui/actionbar .html

8
ответ дан 19.05.2020, 03:51
  • 1
    @charlessun я имел ту же проблему и получил его работа, обеспечивающая те два параметрических усилителя вручную: $slider.slider('option', 'slide')(null, { value: $slider.slider('value') }) (первый параметрический усилитель является ' event' и второй ' ui'). JQuery версия 1.10.2 UI – Felipe Castro 23.04.2013, 09:27

Это только сработало для меня:

supportActionBar?.hide()
-1
ответ дан 19.05.2020, 03:51
  • 1
    Но это не инициирует событие слайда? – Ben 16.12.2013, 18:40

Теги

Похожие вопросы