我有一个由微调器和提交按钮组成的页面。我想要实现的是当用户选择列表中的项目并单击提交时,应该将他带到具有webview的其他布局。微调器中的每个项目都应该在布局中打开不同的.html页面。
我现在拥有的是从微调器中选择的项目,但我不确定如何执行onclick监听器...
主Activity.java的代码是: public class beef extends Activity {
private Spinner spinner1;
private ImageButton btnSubmit;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.beef);
addListenerOnButton();
addListenerOnSpinnerItemSelection();
}
public void addListenerOnSpinnerItemSelection(){
spinner1 = (Spinner) findViewById(R.id.spinner1);
spinner1.setOnItemSelectedListener(new CustomOnItemSelectedListener());
}
//get the selected dropdown list value
public void addListenerOnButton() {
spinner1 = (Spinner) findViewById(R.id.spinner1);
btnSubmit = (ImageButton) findViewById(R.id.imageButton1);
btnSubmit.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
if(v.getId() == btnSubmit.getId())
{
Intent intent = new Intent(beef.this,display.class);
intent.putExtra("urlpath", "animalbites.html");
startActivity(intent);
}
}
});
}
}
CustomOnItemSelectedListener.java的代码是:
@Override
public void onItemSelected(AdapterView<?> arg0, View arg1, int arg2,
long arg3) {
// TODO Auto-generated method stub
if (arg2 == 0) // First item selected
{
//Here I need to give an id for the .html file
}
else if (arg2 == 1) // Second
{
//Here I need to give an id for the .html file
}
}
@Override
public void onNothingSelected(AdapterView<?> arg0) {
// TODO Auto-generated method stub
}
,display.java是:
public class display extends Activity implements OnClickListener {
private WebView webView;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.webview);
Intent intent=getIntent();
String mUrl=intent.getStringExtra("urlpath");
webView = (WebView) findViewById(R.id.webview);
webView.getSettings().setJavaScriptEnabled(true);
webView.loadUrl("file:///android_asset/www/"+mUrl);
}
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
}
}
答案 0 :(得分:1)
我并没有完全解决你的问题,但我会根据我得到的答案回答:
为什么要关注将onClickListener添加到微调器?
只需将onClickListener添加到按钮,然后点击该按钮即可:
String selecteditemName=(String)spinner1.getSelectedItem();
//spinner1 having items : "file1" , "file2"
Intent i=new Intent(this, yournewActivity.class);
i.putExtra("selected_item", selecteditemName);
startActivity(i);
现在,在包含webview的活动(yournewActivity)中,在onCreate()方法中使用此代码:
String item;
Intent i=getIntent();
item = i.getStringExtra("selected_item");
现在你在String'item'中选择了微调器,你现在可以随心所欲:
我的观点是:您应该使用微调器选择作为ID来填充webview。
如果您仍想使用除旋转器中存在的ID之外的任何ID 制作一个额外的java类Idgetter,
class idgetter
{
public static String getID(String name)
{
if(name.equals("file1"))
return "requiredfile1.html";
else if(name.equals("file2"))
return "requiredfile2.html";
}
}
现在,完全按照上面的代码说明,在变量项中选择微调器后,使用:
String id=idgetter.getID(item); //in younewActivity
你终于完成了。
答案 1 :(得分:0)
使用Intent的putExtra方法。
Intent mIntent = new Intent(this, display.class);
mIntent.putExtra("urlpath", "put value in here");
startActivity(mIntent);
答案 2 :(得分:0)
使用多个html页面填充微调器,并在addListenerOnButton()方法中使用spinner.getSelectedItem()。toString()。通过这样做,您将获得所选的html页面并使用intent将其传递给下一个布局。
CODE:
`公共类牛肉扩展活动{
私人Spinner spinner1; private ImageButton btnSubmit;
int final websiteA = 1; int final websiteB = 2; int final websiteC = 3;
String selectedHtmlPage =“”;
.........
.........
.........
@Override
public void onItemSelected(AdapterView<?> arg0, View arg1, int arg2,
long arg3)
{
switch(arg2)
{
case websiteA :
selectedHtmlPage = "websiteA.html";
break;
case websiteB :
selectedHtmlPage = "websiteB.html";
break;
case websiteC :
selectedHtmlPage = "websiteC.html";
break;
}
}
public void addListenerOnButton()
{
btnSubmit = (ImageButton) findViewById(R.id.imageButton1);
btnSubmit.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v)
{
if(v.getId() == btnSubmit.getId())
{
Intent intent = new Intent(beef.this,display.class);
intent.putExtra("urlpath", selectedHtmlPage);
startActivity(intent);
}
}
});
}
}`
答案 3 :(得分:0)
解决了它,它很简单。这是我做的:
public void addListenerOnSpinnerItemSelection(){
spinner1 = (Spinner) findViewById(R.id.spinner1);
spinner1.setOnItemSelectedListener(this);
}
- - -
@Override
public void onClick(View v) {
if(v.getId() == btnSubmit.getId())
{
Intent intent = new Intent(beef.this,display.class);
intent.putExtra("urlpath", mLink);
startActivity(intent);
}
}
});
}
@Override
public void onItemSelected(AdapterView<?> arg0, View arg1, int arg2,
long arg3) {
// TODO Auto-generated method stub
if(arg2==0){
mLink="Beef html/BBQ_Meatballs_Recipes.html";
}
}
@Override
public void onNothingSelected(AdapterView<?> arg0) {
// TODO Auto-generated method stub
}