如何从微调器的项目中调用活动

时间:2013-02-10 04:02:59

标签: java android android-spinner

我有一个由微调器和提交按钮组成的页面。我想要实现的是当用户选择列表中的项目并单击提交时,应该将他带到具有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

    }

}

4 个答案:

答案 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

    }