如何使用URI + STRING(用户输入)

时间:2019-02-19 21:36:29

标签: java android

我正在学习编码,这是我的第一次尝试(第一天),我试图做一些简单的事情,但我无法使它正常工作。

我有一个主要的活动,即用户在文本视图上输入数据,还有一个将数据发送到字符串并启动另一个活动的按钮。

在另一个活动中,我有一个URI,我想要做的是获取部分链接,并在其末尾添加字符串(用户输入)并启动它。

“ www.link.com/ +用户输入的内容(应在字符串上)”

这是mi主要活动java:

import android.content.Intent;
import android.os.Build;
import android.support.annotation.RequiresApi;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;

public class MainActivity extends AppCompatActivity {

    String link;

    EditText  linkInput;

    Button button1;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        linkInput= (EditText) findViewById(R.id.NumberImput);

        button1= (Button) findViewById(R.id.button1);
        button1.setOnClickListener(new View.OnClickListener() {
            @RequiresApi(api = Build.VERSION_CODES.JELLY_BEAN)
            @Override
            public void onClick(View v) {
                link= linkinput.getText().toString();
                startActivity(new Intent(MainActivity.this, ToBrowseract.class));
            }

        });



    }
}

这是我的第二个活动java:

import android.net.Uri;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;

import static android.net.Uri.parse;

public class ToBrowseract extends AppCompatActivity {

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

    Uri uri;

    {
        uri = parse("https://url.net/" + getString("link"));
    }

    private String getString(String link) {
        return link;
    }
}

xml工作正常。大部分内容是我通过阅读一些教程得到的,但是android studio会自动添加一些内容或在检查错误时添加一些内容。 我不知道它在哪里停止工作,如何检查用户输入是否输入字符串?而且我确定URI不能像我写的那样起作用。

谢谢。

3 个答案:

答案 0 :(得分:1)

要将链接传递到下一个Activity,您想使用Bundle。这样,您就可以传递数据并从Intent中读取数据。

在您的onClick中,创建一个Bundle,并将链接作为String放入。它使用键/值对,所以我们说"link"是我们的链接。

然后,当您致电startActivity时,可以传递该Bundle

@Override
public void onClick(View v) {
    String link = linkinput.getText().toString();

    // Storing the link into the bundle to pass to the next Activity.
    Bundle bundle = new Bundle();
    bundle.putString("link", link);

    // Creating an Intent for which Activity to launch.
    Intent intent = new Intent((MainActivity.this, ToBrowseract.class);

    // Starting the new Activity with the Bundle with the link.
    startActivity(intent, bundle);
}

现在,您想在ToBrowseract的{​​{1}}中进行阅读。您可以获取Activity,然后可以获取任何我们要求的Intent

的“附加”
Intent

答案 1 :(得分:0)

我的第一个活动是通过用户输入“链接”作为额外的意图。为此,请如下更改startActivity()代码:

startActivity(new Intent(MainActivity.this, ToBrowseract.class).putExtra("myUri", link));

在第二个活动中,获得如下链接:

    Bundle bundle = getIntent().getExtras();
    String link = bundle.getString("link");
    Uri uri = parse("https://url.net/" + link);

答案 2 :(得分:0)

您有2个不同的活动,并且您将字符串保存到第一个活动的链接变量中,而没有将此数据传递到第二个活动中。 在android中,您可以通过以下方式将数据添加到意图中,从而在2个不同的活动之间传递数据:

您的第一次活动:

WorkManager

在您的第二次活动中检索该数据:

Intent intent = new Intent(getBaseContext(), SignoutActivity.class);
intent.putExtra("yourData", link);
startActivity(intent);