key1 нельзя разрешить в переменную?

По-видимому, возникли некоторые проблемы с моим ключом-значением в том виде, в котором он сейчас настроен. Цель состоит в том, чтобы прочитать значение счетчика (установленного с использованием массива строк), а затем на его основе открыть конкретный локальный файл html.

public class MainActivity extends Activity {

    private Button btnGo;

    String pageChoice;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        // TODO Auto-generated method stub
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        final Spinner page = (Spinner)findViewById(R.id.txtPage);
        final SharedPreferences sharedPref =PreferenceManager.getDefaultSharedPreferences(this);
        btnGo = (Button)findViewById(R.id.btnGo);
        btnGo.setOnClickListener(new OnClickListener() {
            @Override
            public void onClick(View v) {
                // TODO Auto-generated method stub
                pageChoice = page.getSelectedItem().toString();

                //Hopefully will allow for "global" url setting.
                SharedPreferences.Editor editor = sharedPref.edit();
                editor.putString("key1", pageChoice);
                editor.commit();
                startActivity(new Intent(MainActivity.this, Web.class));
            }
        });
    }
}

Ошибка находится в моем Web.java.

public class Web extends Activity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        // TODO Auto-generated method stub
        super.onCreate(savedInstanceState);
        setContentView(R.layout.web);
        SharedPreferences sharedPref = PreferenceManager.getDefaultSharedPreferences(this);
        String strPage = sharedPref.getString(key1, "");

        if (strPage = "By The Numbers") {
            //WebView
            WebView wv = (WebView) findViewById(R.id.webview1);
            WebSettings webSettings = wv.getSettings();
            webSettings.setBuiltInZoomControls(true);
            wv.loadUrl("file:///android_asset/2.html");
        } else if (strPage = "Photos") {
            //WebView
            WebView wv = (WebView) findViewById(R.id.webview1);
            WebSettings webSettings = wv.getSettings();
            webSettings.setBuiltInZoomControls(true);
            wv.loadUrl("file:///android_asset/3.html");
        }
    }

    @Override
    public void onBackPressed() {
        // TODO Auto-generated method stub
        super.onBackPressed();
    }
}

Кроме того, есть ли проблема с тем, что мой strPage является строкой? Как мне переключить его на работу с экземпляром If / Else?


person Joey Sides    schedule 23.04.2015    source источник


Ответы (1)


Вы должны заключить ключ1 в двойные кавычки

 String strPage = sharedPref.getString("key1", "");

потому что это не переменная. Это строка.

person Jens    schedule 23.04.2015
comment
Потрясающие! Спасибо! Это устранило первую проблему. Как мне сделать так, чтобы выходное значение было переменной? Честно говоря, я только начинаю заниматься разработкой под Android и, возможно, откусил больше, чем могу прожевать с этим. xP - person Joey Sides; 23.04.2015
comment
@JoeySides Извините, я не могу вас достать. Вы хотите определить key1 как переменную строку? получить что-нибудь от sharedPref? - person Jens; 23.04.2015
comment
По сути, я пытаюсь определить, какой элемент выбран из массива String в моем MainActivity, и использовать его с вложенными операторами if / if else, чтобы изменить URL-адрес, используемый для WebView. Другими словами, я пытаюсь определить положение прядильщика. - person Joey Sides; 23.04.2015
comment
@JoeySides Взгляните на эту ветку. Вы можете указать значение в намерении и получить его в новом запущенном действии. - person Jens; 23.04.2015