图像上的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 查询的图像存储在不同的变量下?