Welcome to OGeek Q&A Community for programmer and developer-Open, Learning and Share
Welcome To Ask or Share your Answers For Others

Categories

0 votes
186 views
in Technique[技术] by (71.8m points)

android - how to programmatically show and hide action bar on one activity

i got this one activity wherein i need to hide actionbar on the login interface then once login it will show the action bar.i got one activity only. if i put getActionBar on the main activity it gives me error.

heres the code:

@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;
     }





}
question from:https://stackoverflow.com/questions/22891440/how-to-programmatically-show-and-hide-action-bar-on-one-activity

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
Welcome To Ask or Share your Answers For Others

1 Reply

0 votes
by (71.8m points)

For class extending Activity :

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

For class extending AppCompatActivity :

getSupportActionBar().hide();
getSupportActionBar().show();

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
OGeek|极客中国-欢迎来到极客的世界,一个免费开放的程序员编程交流平台!开放,进步,分享!让技术改变生活,让极客改变未来! Welcome to OGeek Q&A Community for programmer and developer-Open, Learning and Share
Click Here to Ask a Question

...