图像上的OnClick()会添加具有不同信息的相同片段

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了图像上的OnClick()会添加具有不同信息的相同片段相关的知识,希望对你有一定的参考价值。

我想要做的是创建一个应用程序,我在主屏幕中有可点击的图像。

我想到的想法是当我点击图像时出现带有WebView的片段。每个图像都必须在WebView中给我不同的信息,但我不能这样做所以我继续这样做:

public class MainActivity extends Activity implements OnClickListener{

    private ImageView image1;
    private ImageView image2;
    private ImageView image3;
    private ImageView image4;
    private ImageView image5;

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

        image1 = (ImageView) findViewById(R.id.imageView1);
        image2 = (ImageView) findViewById(R.id.imageView2);
        image3 = (ImageView) findViewById(R.id.imageView3);
        image4 = (ImageView) findViewById(R.id.imageView4);
        image5 = (ImageView) findViewById(R.id.imageView5);

        image1.setOnClickListener(this);
        image2.setOnClickListener(this);
        image3.setOnClickListener(this);
        image4.setOnClickListener(this);
        image5.setOnClickListener(this);


    }

    @Override
    public void onClick(View v) {

        Intent i = null;
        //Toast.makeText(getApplicationContext(), "working", Toast.LENGTH_SHORT).show();

        switch (v.getId()) {
        case R.id.imageView1:
            i = new Intent(getApplicationContext(), WebviewActivity1.class);
        break;
        case R.id.imageView2:
            i = new Intent(getApplicationContext(), WebviewActivity2.class);
        break;
        case R.id.imageView3:
            i = new Intent(getApplicationContext(), WebviewActivity3.class);
        break;
        case R.id.imageView4:
            i = new Intent(getApplicationContext(), WebviewActivity4.class);
        break;
        case R.id.imageView5:
            i = new Intent(getApplicationContext(), WebviewActivity5.class);
        break;
        }
        startActivity(i);
    }
}

我不知道如何使用Fragments所以我只是创建了不同的活动,用WebView调用xml,我以编程方式更改了每个活动中的WebView内容。

我相信使用Fragments有一种更短更简单的方法。有人能指导我吗?

答案

恢复您希望使用相同的布局和webview显示相同的片段或活动,但在此webview中具有不同的内容。因此将参数传递给第二个活动或片段。在那里,您可以收集这些参数,并在每种情况下按您的需要进行操作(在Webview上加载内容X或Y)。

这些参数可以在sharedpreferences或bundle参数的帮助下传递。

编辑:如果你想让事情变得更容易,那么现在不要使用片段。如果您需要实施ViewPager,例如,要刷屏幕,那么将是另一次。现在,让我们扩展您的活动样本,让事情发生。

首先,在你的androidManifest.xml中你必须获得访问互联网的权限(如果你打算从那里加载网页),所以把它放在<application>之前:

<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />

然后,在<application>内部,声明第二个活动,您将在其中显示您的webview。我们将此活动称为Webview.class。以这种方式定义它,但在清单文件中:

<activity android:name=".Webview" android:label="My Test Webview" />

现在让我们看看整个Webview.java:

public class Webview extends Activity{

private WebView wv;
private String url;

protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.webview);

    // get the url to open
    Intent intentBundle = this.getIntent();
    url = intentBundle.getStringExtra("url");

    wv = (WebView) findViewById(R.id.myWebView);
    wv.setWebViewClient(new WebViewClient()); // needed to open url inside our webview, otherwise it will open at the default browser
    wv.loadUrl(url);
}}

精细。这个java将需要我称为webview.xml的布局文件,其内容如下:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
android:background="#ff0000"
>
<WebView xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/myWebView"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    />
</LinearLayout>

最后,在MainActivity.java的onClick上,更改您调用辅助活动的位置,如下所示:

1 - 从这个Intent i = null;到这个Intent i = new Intent(getApplicationContext(), Webview.class);

2 - 然后,在您的交换机的每种情况下,您实现此模型:

case R.id.imageView1:
i.putExtra("url", "file:///android_asset/alocalpage.htm"); // use this to call a page on your assets folder
break;

case R.id.imageView2:
i.putExtra("url", "http://www.google.com");
break;

依此类推,与下一个imageViews相同的想法,为每个imageViews定义一个url。就这样。希望能帮助到你。最好。

以上是关于图像上的OnClick()会添加具有不同信息的相同片段的主要内容,如果未能解决你的问题,请参考以下文章

在图像上具有不透明度的 jQuery 动画以相同的动画时间以不同的速度显示它们

什么算法可以混合具有相同场景的多个图像,除了每个图像中不同位置的一个对象?

如果它们都具有相同的 id,如何将来自 sql 查询的图像存储在不同的变量下?

使图像按钮更改页面上的不同图像

如何获取点在UIImageView上的点的坐标,使它们在所有设备(不同大小/分辨率)上的相同位置?

具有相同图像的多个 UIImageViews 给出不一致错误