2014-01-02 7 views
0

Я разрабатываю очень простое приложение, которое подключается к сети Wi-Fi, а затем делает некоторые вещи.Не удается вернуться с wifi конфигурации страницы

Идея состоит в том, что я открываю страницу конфигурации wifi для выбора сети Wi-Fi.

До сих пор здесь все в порядке. Но когда я нажимаю кнопку «Назад», чтобы вернуться к моему приложению, она перезагружает страницу конфигурации Wi-Fi.

Вот мой код:

public class SetHttp extends Activity { 
    public final static String EXTRA_MESSAGE = "com.example.WebcamView.MESSAGE"; 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_set_http); 
     WifiManager mWifi = (WifiManager)getSystemService(Context.WIFI_SERVICE); 
     if(!mWifi.isWifiEnabled()){ 
      mWifi.setWifiEnabled(true); 
     } 
     sendIntent(); 
    } 

    protected void sendIntent(){ 
     Intent enwifi = new Intent(android.provider.Settings.ACTION_WIFI_SETTINGS); 
     startActivityForResult(enwifi, 3); 
    } 

    public void sendHttp(View view){ 
     Intent intent = new Intent(this, WebPage.class); 
     EditText editText = (EditText) findViewById(R.id.edit_message); 
     String message = editText.getText().toString(); 
     intent.putExtra(EXTRA_MESSAGE, message); 
     startActivity(intent); 
    } 
} 

Я попытался создать OnStart, onRestart ... методы, но сбои приложений.

Любые идеи? Должен использовать startActivityForResult и onActivity Result и что я должен писать на ActivityResult ??

спасибо!

Я пробовал некоторые вещи, но ни один из них не работает. Вот мой код:

public class SetHttp extends Activity { 
public final static String EXTRA_MESSAGE = "com.example.WebcamView.MESSAGE"; 

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_set_http); 
    WifiManager mWifi = (WifiManager)getSystemService(Context.WIFI_SERVICE); 
    if(!mWifi.isWifiEnabled()){ 
     mWifi.setWifiEnabled(true); 
    } 
    //sendIntent(); 
} 
protected void onStart(){ 
    super.onStart(); 
    //sendIntent(); 
} 
protected void onRestart(){ 
    super.onRestart(); 
    //sendIntent(); 
    setContentView(R.layout.activity_set_http); 
} 
protected void onPause(){ 
    super.onPause(); 
    setContentView(R.layout.activity_set_http); 
} 
protected void onStop(){ 
    super.onStop(); 
} 
protected void onResume(Bundle savedInstanceState){ 
    super.onResume(); 
    setContentView(R.layout.activity_set_http); 
    sendIntent(); 
} 

protected void sendIntent(){ 
    Intent enwifi = new Intent(android.provider.Settings.ACTION_WIFI_SETTINGS); 
    startActivity(enwifi); 
} 

public void sendHttp(View view){ 
    Intent intent = new Intent(this, WebPage.class); 
    EditText editText = (EditText) findViewById(R.id.edit_message); 
    String message = editText.getText().toString(); 
    intent.putExtra(EXTRA_MESSAGE, message); 
    startActivity(intent); 
} 

}

ответ

1

sendIntent(); всегда будет называться. Это последнее заявление в onCreate(). Если вы хотите назвать это только один раз, подумайте об изменении его места.

NinjaEdit: У вас нет (или, по крайней мере, не показано, надеюсь?) onActivityResult(int requestCode, int resultCode, Intent data). Я не уверен, что вы можете вернуть какой-либо результат оттуда (вы не можете, если вы правильно откроете настройки GPS), поэтому, если вы не можете, я предлагаю вам использовать флаги (если в первый раз вызовите метод при вызове флаг, а после возвращения решите, что делать).

+0

Благодарим вас за ваш ответ. Я получаю первый комментарий, итак, где вы, сугстер, я помещаю его так, чтобы он выполнял свою работу за один раз, а затем я могу вернуться к моему приложению? – user2149122

+0

Просто подключите флаг = false. Вместо sendIntent(); сделайте это если (! подключен) { sendIntent(); } В onRestart() вы можете добавить эту часть, но убедитесь, что она вызывается только один раз (добавьте еще один флаг для firstRun, например) и сделайте это true в onCreate(). ConnectivityManager connManager = (ConnectivityManager) getSystemService (Context.CONNECTIVITY_SERVICE); NetworkInfo ni = connManager.getNetworkInfo (ConnectivityManager.TYPE_WIFI); if (ni.isConnected()) { connected = true; } Итак, когда вы вернетесь, вы не должны начинать это снова. –

+0

Извините, о плохом форматировании, думаю, комментарии не так хороши с кодом. Спросите еще раз, если я не объясню это. –