0

我有一个由微调器和提交按钮组成的页面。我想要实现的是当用户在列表中选择一个项目并单击提交时,它应该将他带到另一个具有 web 视图的布局。微调器中的每个项目都应在布局中打开不同的 .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

    }

}
4

4 回答 4

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");

现在您在字符串“项目”中选择了微调器,您现在可以做任何您想做的事情:

我的观点是:您应该使用您的微调器选择作为填充 web 视图的 ID。

如果您仍想使用除微调器中存在的 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";
    }
}

现在,完全按照上面的代码进行操作,在变量 item 中选择微调器后,使用:

    String id=idgetter.getID(item);   //in younewActivity

你终于完成了。

于 2013-02-10T05:33:45.890 回答
0

通过使用 Intent 的 putExtra 方法。

Intent mIntent = new Intent(this, display.class);
mIntent.putExtra("urlpath", "put value in here");
startActivity(mIntent);
于 2013-02-10T04:27:43.317 回答
0

使用 html 页面数填充微调器,并在 addListenerOnButton() 方法中使用 spinner.getSelectedItem().toString()。通过这样做,您将获得选定的 html 页面并使用意图将其传递给下一个布局。

代码:

`公共类牛肉扩展活动{

私人微调微调器1;私人 ImageButton btnSubmit;

int 最终网站A = 1; int 最终网站B = 2; int 最终网站C = 3;

字符串 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);
            }
        }

    });

}

}`

于 2013-02-10T04:35:39.410 回答
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

    }
于 2013-02-18T06:37:53.123 回答