Android重构URL onClick按钮

时间:2016-04-13 20:33:05

标签: java android url button android-activity

我想创建一个Android应用程序,当应用程序的用户单击按钮时,它应该转到RaspBerry PI的IP地址。此Pi位于网络本身并具有静态IP,但应由用户指定一次。

我有一个TextField,用户可以在其中输入Pi的IP地址。这应该存储在SharedPreferences中。以下是此部分的代码:

public void save(View view) {
    editor.putString("homeIP", textHomeIP.getText().toString());
    editor.commit();

    editor.putString("PiIP", textPiIP.getText().toString());
    editor.commit();

    piIP = textPiIP.getText().toString();
    homeIP = textHomeIP.getText().toString();

    makeURL();

    Toast.makeText(getApplication(), "Saved", Toast.LENGTH_SHORT);

    finish();
}

单击保存按钮时会运行此方法。该类扩展了MainActivity,并在单击设置按钮时使用设置xml打开。由于某些原因,在MainActivity中无法更改URL。这是更改网址

的方法
protected void makeURL()
{
    if(mSocket != null)
    {
        mSocket.disconnect();
    }

    try
    {
        url = new URL("http://" + piIP);
        Log.d("URL", url.toString());
    }
    catch (java.net.MalformedURLException e) {}

    try
    {
        mSocket = IO.socket(url.toString(), opts);
    }
    catch (java.net.URISyntaxException e)
    {
        Log.d("ERROR", "Cant initialize socket: " + e.toString());
    }

    mSocket.connect();
    mSocket.on("detection-start", detectionStart);
    mSocket.on("detection-end", detectionEnd);
}

套接字实际连接但由于某种原因URL保持不变。我在onCreate中运行此方法并在此之前启动piIP。

这里是onCreate方法:

 @Override
 protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);

    ipActivity = new IPActivity();
    ipActivity.execute();

    setContentView(R.layout.content_main);
    notificationSettings();

    //connectionChanger = new ConnectionChangeReceiver();

    sharedPref = this.getPreferences(Context.MODE_PRIVATE);
    //sharedPref = PreferenceManager.getDefaultSharedPreferences(this);

    editor = sharedPref.edit();

    homeIP = sharedPref.getString("homeIP", "localhost");
    piIP = sharedPref.getString("PiIP", "localhost");

    Log.d("Pi IP", piIP);

    makeURL();
}

最后这里是openBrowser()方法

public void openBrowser(View view)
{
    makeURL();
    Intent browserIntent = new Intent(Intent.ACTION_VIEW, Uri.parse(url.toString()));
    startActivity(browserIntent);
}

有人可以告诉我为什么在保存设置时不会更改网址?

1 个答案:

答案 0 :(得分:0)

事实证明我使用的是getPreferences而不是getSharedPreferences。它解决了创建URL的问题。我自己创建了子类,让de ip地址通过getSharedPreferences加载。