从onClickListener

时间:2016-08-14 21:39:08

标签: java android android-intent

我正在尝试为Android开发应用程序,而java有点令人困惑。我到目前为止的代码是....

protected void onCreate(Bundle savedInstanceState){

    super.onCreate(savedInstanceState);

    setContentView(R.layout.activity_main);

    ButtonClick = (Button) findViewById(R.id.ButtonClick);

    final String link = "htttp://www.stackoverflow.com";

    ButtonClick.setOnClickListener(new View.OnClickListener() {

        public void onClick(View v) {
            URI uri;
            try {
                uri = new URI("http://www.stackoverflow.com");
            } catch (URISyntaxException e) {
                e.printStackTrace();
            }
            browserIntent = new Intent(Intent.ACTION_VIEW, uri);
            startActivity(browserIntent);
        }
    });}}

当前编写代码的方式的问题是当我尝试分配新意图(browserIntent)时,我理解为该对象的“数据”部分。 Android Studio说uri无法转换为URI,但它只被声明为URI只有几行!

我还尝试插入一串文本,也在上面初始化,看起来像......

           browserIntent = new Intent(Intent.ACTION_VIEW, Uri.parse(link);

编译很好,但是当我实际点击按钮时,它表示没有活动来处理意图。

所以我的问题依次是: 1)如果我在代码中先前声明了URI uri变量,并且intent的第二个属性正在寻找URI,那么当我简单地将变量uri提供给它时​​,为什么会出现错误? 2)在第二种情况下,当我试图解析字符串时,没有活动来处理意图,这是ACTION_VIEW的问题吗?似乎它能够很好地找到URI,但它实际上无法打开浏览器。也许 3)什么是最简单的java api或java教程,它将涵盖您已找到或知道的这个问题?

1 个答案:

答案 0 :(得分:0)

AS必须说“uri未初始化”,因为由于try-catch阻塞无法保证。因此,我们将代码更改为:

修改

愚蠢的我,我们需要使用Uri类而不是URI类,因为没有构造函数new Intent(String action, URI uri),但new Intent(String action, Uri uri)有一个。{1}}。对于URIUri之间的差异,请访问here

ButtonClick.setOnClickListener(new View.OnClickListener() {

        public void onClick(View v) {
            Uri uri;
            try { 
                uri = Uri.parse("http://www.stackoverflow.com");
                browserIntent = new Intent(Intent.ACTION_VIEW, uri);
                startActivity(browserIntent);
            } catch (URISyntaxException e) {
                e.printStackTrace();
            } 

        } 
    });}}