私のアプリには3タブのActionBarレイアウトがあります。3つのタブは、ダッシュボード、フィード、メッセージです。
3つのうちのいずれかをクリックすると、アプリケーションはwww.flyalaskava.org/incog/mobile/のWebViewを作成することになっています。これは、アクティブなセッションがない場合は、画像と「ログインして」を表示します。フェイスブック」ボタン。
問題は、最初のタブ(ダッシュボード)をロードしてFacebookでログインするとログインしますが、別のタブをクリックするとすぐにセッションが失われ、再度プロンプトが表示されます。
現在、これらはすべて同じphpファイルを使用しており、ログインシステムはAndroidの外部で完全に機能することに注意してください。これが初心者の質問である場合は申し訳ありません-どんな助けでも大歓迎です。
package com.example.testing;
import android.app.ActionBar;
import android.app.FragmentTransaction;
import android.os.Bundle;
import android.support.v4.app.Fragment;
import android.support.v4.app.FragmentActivity;
import android.support.v4.app.NavUtils;
import android.view.Gravity;
import android.view.LayoutInflater;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.view.ViewGroup;
import android.widget.TextView;
import android.webkit.WebView;
import android.webkit.WebViewClient;
import android.net.ConnectivityManager;
import android.net.NetworkInfo;
import android.app.AlertDialog;
import android.app.Dialog;
import android.content.DialogInterface;
import com.handmark.pulltorefresh.library.PullToRefreshWebView;
public class Main extends FragmentActivity implements ActionBar.TabListener {
PullToRefreshWebView mPullRefreshWebView;
WebView mWebView;
/**
* The serialization (saved instance state) Bundle key representing the
* current tab position.
*/
private static final String STATE_SELECTED_NAVIGATION_ITEM = "selected_navigation_item";
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
mPullRefreshWebView = (PullToRefreshWebView) findViewById(R.id.pull_refresh_webview);
mWebView = mPullRefreshWebView.getRefreshableView();
mWebView.getSettings().setJavaScriptEnabled(true);
mWebView.setWebViewClient(new SampleWebViewClient());
mWebView.loadUrl("http://www.google.com");
// Set up the action bar to show tabs.
final ActionBar actionBar = getActionBar();
actionBar.setNavigationMode(ActionBar.NAVIGATION_MODE_TABS);
// For each of the sections in the app, add a tab to the action bar.
actionBar.addTab(actionBar.newTab().setText(R.string.title_section1)
.setTabListener(this));
actionBar.addTab(actionBar.newTab().setText(R.string.title_section2)
.setTabListener(this));
actionBar.addTab(actionBar.newTab().setText(R.string.title_section3)
.setTabListener(this));
}
private static class SampleWebViewClient extends WebViewClient {
@Override
public boolean shouldOverrideUrlLoading(WebView view, String url) {
view.loadUrl(url);
return true;
}
}
@Override
public void onRestoreInstanceState(Bundle savedInstanceState) {
// Restore the previously serialized current tab position.
if (savedInstanceState.containsKey(STATE_SELECTED_NAVIGATION_ITEM)) {
getActionBar().setSelectedNavigationItem(
savedInstanceState.getInt(STATE_SELECTED_NAVIGATION_ITEM)
);
}
}
@Override
public void onSaveInstanceState(Bundle outState) {
// Serialize the current tab position.
outState.putInt(STATE_SELECTED_NAVIGATION_ITEM, getActionBar()
.getSelectedNavigationIndex());
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.activity_main, menu);
return true;
}
public boolean onOptionsItemSelected(MenuItem item) {
switch (item.getItemId()) {
case R.id.menu_settings:
displayAlert();
break;
case R.id.menu_exit:
displayExit();
break;
default:;
}
return(super.onOptionsItemSelected(item));
}
public void displayAlert() {
new AlertDialog.Builder(this)
.setMessage("This Application was created by Grant Adkins")
.setTitle("About")
.setCancelable(false)
.setNeutralButton(android.R.string.ok,
new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int whichButton){
dialog.cancel();
}
}
)
.show();
}
public void displayExit() {
new AlertDialog.Builder(this).setMessage("Exit the application")
.setTitle("Are you sure?")
.setCancelable(false)
.setNeutralButton(android.R.string.no,
new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int whichButton){
dialog.cancel();
}
}).setPositiveButton(android.R.string.yes,
new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int whichButton){
finish();
}
}
)
.show();
}
public boolean isOnline() {
ConnectivityManager cm =
(ConnectivityManager) getSystemService(CONNECTIVITY_SERVICE);
NetworkInfo netInfo = cm.getActiveNetworkInfo();
if (netInfo != null && netInfo.isConnectedOrConnecting()) {
return true;
}
String summary = "<html><body>No Network Connection.</body></html>";
mWebView.loadData(summary, "text/html", null);
return false;
}
@Override
public void onTabSelected(ActionBar.Tab tab, FragmentTransaction fragmentTransaction) {
// When the given tab is selected, show the tab contents in the
// container view
int page = tab.getPosition() + 1;
if(page == 1) {
/// eventually is going to load index.php?content=dashboard
mWebView.loadUrl("http://www.flyalaskava.org/incog/mobile/");
isOnline();
} else if (page == 2) {
/// eventually is going to load index.php?content=messages
mWebView.loadUrl("http://www.flyalaskava.org/incog/mobile/");
isOnline();
} else if (page == 3) {
/// eventually is going to load index.php?content=feed
mWebView.loadUrl("http://www.flyalaskava.org/incog/mobile/");
isOnline();
} else {
mWebView.loadUrl("http://www.google.com");
isOnline();
}
}
@Override
public void onTabUnselected(ActionBar.Tab tab, FragmentTransaction fragmentTransaction) {
}
@Override
public void onTabReselected(ActionBar.Tab tab, FragmentTransaction fragmentTransaction) {
}
/**
* A dummy fragment representing a section of the app, but that simply
* displays dummy text.
*/
public static class DummySectionFragment extends Fragment {
/**
* The fragment argument representing the section number for this
* fragment.
*/
public static final String ARG_SECTION_NUMBER = "section_number";
public DummySectionFragment() {
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
// Create a new TextView and set its text to the fragment's section
// number argument value.
TextView textView = new TextView(getActivity());
textView.setGravity(Gravity.CENTER);
textView.setText(
Integer.toString(getArguments().getInt(ARG_SECTION_NUMBER))
);
return textView;
}
}
}`
*\\\\\\\\アップデート\\\\\\*
同様の問題のように思われるこの記事を見つけました。おそらく、それを使用しmWebView.loadUrl("http://www.flyalaskava.org/incog/mobile/");
ているのは新しいブラウザのように機能しているため、その方法を使用せずにURLを変更する方法はありますか。
これが問題の写真です。