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

これで、文字列 'item' にスピナーの選択ができました。これで、やりたいことが何でもできます。

私のポイントは次のとおりです。スピナーの選択を、webview を設定するための ID として使用する必要があります。

スピナーに存在する ID 以外の ID を引き続き使用する場合は、追加の Java クラス Idetter を作成します。

    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

スピナーにhtmlページの数を入力し、addListenerOnButton()メソッド内でspinner.getSelectedItem()。toString()を使用します。doを実行すると、選択したhtmlページが取得され、インテントを使用して次のレイアウトに渡されます。

コード:

`パブリッククラスビーフはアクティビティを拡張します{

プライベートスピナースピナー1; プライベートImageButtonbtnSubmit;

int final websiteA = 1; int final websiteB = 2; int final websiteC = 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

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

それを解決しました、それは簡単です。これが私がしたことです:

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 に答える