草庐IT

java - 向打开浏览器 URL 的 Activity 添加按钮

coder 2024-07-04 原文

我想在我的一个 Activity (显示新闻文章)中添加一个按钮,这样当用户单击该按钮时,文章就会在他们的浏览器中打开。到目前为止,我已经在我的 xml 中添加了按钮并且它出现了。我只是在使用点击监听器时遇到了一些麻烦。下面是我的代码,我收到“setOnClickListener”错误,这是“无法从静态内容引用非静态方法‘setOnClickListener(android.view.View.onClickListener)’”。

我不知道这是什么意思!也许我没有在正确的地方调用方法,或者方法本身有错误?

谁能帮我看看,谢谢!

import android.content.Intent;
import android.media.Image;
import android.net.Uri;
import android.support.v4.app.ShareCompat;
import android.support.v4.view.MenuItemCompat;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.support.v7.widget.ShareActionProvider;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.widget.Button;
import android.widget.ImageView;
import android.widget.TextView;
import android.view.View.OnClickListener;

import com.android.volley.Response;
import com.android.volley.VolleyError;
import com.android.volley.toolbox.JsonArrayRequest;
import com.android.volley.toolbox.JsonObjectRequest;
import com.android.volley.toolbox.NetworkImageView;

import org.json.JSONException;
import org.json.JSONObject;
public class NewsItemActivity extends AppCompatActivity {

    //Declare java object for the UI elements
    private TextView itemTitle;
    private TextView itemDate;
    private TextView itemContent;
    private NetworkImageView itemImage;

    private ShareActionProvider mShareActionProvider;

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

        setContentView(R.layout.activity_news_item);

        itemTitle = (TextView) findViewById(R.id.itemTitle);
        itemDate = (TextView) findViewById(R.id.itemDate);
        itemContent = (TextView) findViewById(R.id.itemContent);
        itemImage = (NetworkImageView) findViewById(R.id.itemImage);

        EDANewsApp app = EDANewsApp.getInstance();

        Intent intent = getIntent();
        int itemId = intent.getIntExtra("newsItemId", 0);

        String url = "http://www.efstratiou.info/projects/newsfeed/getItem.php?id="+itemId;

        JsonObjectRequest request = new JsonObjectRequest(url, listener, errorListener);

        app.requestQueue.add(request);

        Button.setOnClickListener(new View.OnClickListener() {
            public void onClick(View v) {
                Intent intent = getIntent();
                int itemId = intent.getIntExtra("newsItemId", 0);
                String shareUrl = "http://www.efstratiou.info/projects/newsfeed/getItem.php?id=" + itemId;

                Intent buttonIntent = new Intent();
                buttonIntent.setAction(Intent.ACTION_VIEW);
                buttonIntent.addCategory(Intent.CATEGORY_BROWSABLE);
                buttonIntent.setData(Uri.parse(shareUrl));
                startActivity(buttonIntent);
            }
        });
    };

activity_news_item.xml

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context=".NewsItemActivity">

    <ScrollView
        android:layout_width="match_parent"
        android:layout_height="match_parent">

        <LinearLayout
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:orientation="vertical">

            <TextView
                android:id="@+id/itemTitle"
                android:layout_margin="15dp"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:textSize="20sp"
                android:textStyle="bold"
                android:textColor="#3183b9"/>

            <TextView
                android:id="@+id/itemDate"
                android:layout_marginLeft="15dp"
                android:layout_marginBottom="15dp"
                android:textSize="16sp"
                android:textStyle="italic"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                />

            <com.android.volley.toolbox.NetworkImageView
                android:id="@+id/itemImage"
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                />

            <TextView
                android:id="@+id/itemContent"
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:layout_margin="20sp"
                android:textSize="16sp"
                />

            <Button
                android:id="@+id/BrowserButton"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:text="View in browser"
                android:layout_marginLeft="15dp"
                style="@style/BrowserButton"
                />

        </LinearLayout>
    </ScrollView>

</RelativeLayout>

最佳答案

改变

Button.setOnClickListener(new View.OnClickListener() { ... });

Button button = (Button) findViewById(R.id.BrowserButton);
button.setOnClickListener(new View.OnClickListener() { ... });

您需要在 Button 的实例上调用 setOnClickListener 方法,而不是在类本身上。

关于java - 向打开浏览器 URL 的 Activity 添加按钮,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34337924/

有关java - 向打开浏览器 URL 的 Activity 添加按钮的更多相关文章

  1. ruby - 我需要将 Bundler 本身添加到 Gemfile 中吗? - 2

    当我使用Bundler时,是否需要在我的Gemfile中将其列为依赖项?毕竟,我的代码中有些地方需要它。例如,当我进行Bundler设置时:require"bundler/setup" 最佳答案 没有。您可以尝试,但首先您必须用鞋带将自己抬离地面。 关于ruby-我需要将Bundler本身添加到Gemfile中吗?,我们在StackOverflow上找到一个类似的问题: https://stackoverflow.com/questions/4758609/

  2. ruby - 使用 Vim Rails,您可以创建一个新的迁移文件并一次性打开它吗? - 2

    使用带有Rails插件的vim,您可以创建一个迁移文件,然后一次性打开该文件吗?textmate也可以这样吗? 最佳答案 你可以使用rails.vim然后做类似的事情::Rgeneratemigratonadd_foo_to_bar插件将打开迁移生成的文件,这正是您想要的。我不能代表textmate。 关于ruby-使用VimRails,您可以创建一个新的迁移文件并一次性打开它吗?,我们在StackOverflow上找到一个类似的问题: https://sta

  3. ruby - 将 Bootstrap Less 添加到 Sinatra - 2

    我有一个ModularSinatra应用程序,我正在尝试将Bootstrap添加到应用程序中。get'/bootstrap/application.css'doless:"bootstrap/bootstrap"end我在views/bootstrap中有所有less文件,包括bootstrap.less。我收到这个错误:Less::ParseErrorat/bootstrap/application.css'reset.less'wasn'tfound.Bootstrap.less的第一行是://CSSReset@import"reset.less";我尝试了所有不同的路径格式,但它

  4. ruby-on-rails - rails : save file from URL and save it to Amazon S3 - 2

    从给定URL下载文件并立即将其上传到AmazonS3的更直接的方法是什么(+将有关文件的一些信息保存到数据库中,例如名称、大小等)?现在,我既不使用Paperclip,也不使用Carrierwave。谢谢 最佳答案 简单明了:require'open-uri'require's3'amazon=S3::Service.new(access_key_id:'KEY',secret_access_key:'KEY')bucket=amazon.buckets.find('image_storage')url='http://www.ex

  5. ruby - 续集在添加关联时访问many_to_many连接表 - 2

    我正在使用Sequel构建一个愿望list系统。我有一个wishlists和itemstable和一个items_wishlists连接表(该名称是续集选择的名称)。items_wishlists表还有一个用于facebookid的额外列(因此我可以存储opengraph操作),这是一个NOTNULL列。我还有Wishlist和Item具有续集many_to_many关联的模型已建立。Wishlist类也有:selectmany_to_many关联的选项设置为select:[:items.*,:items_wishlists__facebook_action_id].有没有一种方法可以

  6. ruby - 如何使用 Ruby aws/s3 Gem 生成安全 URL 以从 s3 下载文件 - 2

    我正在编写一个小脚本来定位aws存储桶中的特定文件,并创建一个临时验证的url以发送给同事。(理想情况下,这将创建类似于在控制台上右键单击存储桶中的文件并复制链接地址的结果)。我研究过回形针,它似乎不符合这个标准,但我可能只是不知道它的全部功能。我尝试了以下方法:defauthenticated_url(file_name,bucket)AWS::S3::S3Object.url_for(file_name,bucket,:secure=>true,:expires=>20*60)end产生这种类型的结果:...-1.amazonaws.com/file_path/file.zip.A

  7. java - 等价于 Java 中的 Ruby Hash - 2

    我真的很习惯使用Ruby编写以下代码:my_hash={}my_hash['test']=1Java中对应的数据结构是什么? 最佳答案 HashMapmap=newHashMap();map.put("test",1);我假设? 关于java-等价于Java中的RubyHash,我们在StackOverflow上找到一个类似的问题: https://stackoverflow.com/questions/22737685/

  8. ruby - 在 Ruby 中用键盘诅咒数组浏览 - 2

    我正在尝试在Ruby中制作一个cli应用程序,它接受一个给定的数组,然后将其显示为一个列表,我可以使用箭头键浏览它。我觉得我已经在Ruby中看到一个库已经这样做了,但我记不起它的名字了。我正在尝试对soundcloud2000中的代码进行逆向工程做类似的事情,但他的代码与SoundcloudAPI的使用紧密耦合。我知道cursesgem,我正在考虑更抽象的东西。广告有没有人见过可以做到这一点的库或一些概念证明的Ruby代码可以做到这一点? 最佳答案 我不知道这是否是您正在寻找的,但也许您可以使用我的想法。由于我没有关于您要完成的工作

  9. ruby-on-rails - 浏览 Ruby 源代码 - 2

    我的主要目标是能够完全理解我正在使用的库/gem。我尝试在Github上从头到尾阅读源代码,但这真的很难。我认为更有趣、更温和的踏脚石就是在使用时阅读每个库/gem方法的源代码。例如,我想知道RubyonRails中的redirect_to方法是如何工作的:如何查找redirect_to方法的源代码?我知道在pry中我可以执行类似show-methodmethod的操作,但我如何才能对Rails框架中的方法执行此操作?您对我如何更好地理解Gem及其API有什么建议吗?仅仅阅读源代码似乎真的很难,尤其是对于框架。谢谢! 最佳答案 Ru

  10. ruby-on-rails - Ruby url 到 html 链接转换 - 2

    我正在使用Rails构建一个简单的聊天应用程序。当用户输入url时,我希望将其输出为html链接(即“url”)。我想知道在Ruby中是否有任何库或众所周知的方法可以做到这一点。如果没有,我有一些不错的正则表达式示例代码可以使用... 最佳答案 查看auto_linkRails提供的辅助方法。这会将所有URL和电子邮件地址变成可点击的链接(htmlanchor标记)。这是文档中的代码示例。auto_link("Gotohttp://www.rubyonrails.organdsayhellotodavid@loudthinking.

随机推荐