0

2 つの異なる Java ファイルがあり、両方のコードが 1 つのファイルに収まるようにそれらを結合する方法があるかどうか疑問に思っていました。

以下は、[いいえ] をクリックすると何もせず、[はい] をクリックすると新しいアクティビティに移動するダイアログ ボックスを作成するだけです。

package com.example.top_tech_deals;


import android.app.Activity;
import android.app.AlertDialog;
import android.content.DialogInterface;
import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.Toast;



public class AlertDialogActivity extends Activity {
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.post);


    Button btnAlertTwoBtns = (Button) findViewById(R.id.btnAlertWithTwoBtns);






    /**
     * Showing Alert Dialog with Two Buttons one Positive Button with Label
     * "YES" one Negative Button with Label "NO"
     */
    btnAlertTwoBtns.setOnClickListener(new View.OnClickListener() {

        public void onClick(View arg0) {
            // Creating alert Dialog with two Buttons

            AlertDialog.Builder alertDialog = new AlertDialog.Builder(AlertDialogActivity.this);

            // Setting Dialog Title
            alertDialog.setTitle("Confirm Delete...");

            // Setting Dialog Message
            alertDialog.setMessage("Are you sure you want delete this?");

            // Setting Icon to Dialog
            alertDialog.setIcon(R.drawable.delete);

            // Setting Positive "Yes" Button
            alertDialog.setPositiveButton("YES",
                    new DialogInterface.OnClickListener() {
                        public void onClick (DialogInterface dialog,int which) {
                            // Write your code  here to execute after dialog

                            Intent k = new  Intent(AlertDialogActivity.this, Camera.class);
                             startActivity(k);

                            Toast.makeText (getApplicationContext(), "You clicked on YES", Toast.LENGTH_SHORT).show();
                        }
                    });
            // Setting Negative "NO" Button
            alertDialog.setNegativeButton("NO",
                    new DialogInterface.OnClickListener() {
                        public void onClick (DialogInterface dialog,    int which) {
                            // Write your code  here to execute after dialog
                            Toast.makeText (getApplicationContext(), "You clicked on NO", Toast.LENGTH_SHORT).show();
                            dialog.cancel();
                        }
                    });

            // Showing Alert Message
            alertDialog.show();

        }
    });

}
}

この 2 番目のコードは、ユーザーが選択できるアイテムでいっぱいのドロップダウン メニューを作成します。

package com.example.top_tech_deals;

import java.util.ArrayList;
import java.util.List;

import android.app.Activity;
import android.os.Bundle;
import android.view.View;
import android.widget.AdapterView;
import android.widget.ArrayAdapter;
import android.widget.Spinner;
import android.widget.Toast;
import android.widget.AdapterView.OnItemSelectedListener;

public class AndroidSpinnerExampleActivity extends Activity implements OnItemSelectedListener{
@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.spinex);

    // Spinner element
    Spinner spinner = (Spinner) findViewById(R.id.spinner);

    // Spinner click listener
    spinner.setOnItemSelectedListener(this);

    // Spinner Drop down elements
    List<String> categories = new ArrayList<String>();
    categories.add("Automobile");
    categories.add("Business Services");
    categories.add("Computers");
    categories.add("Education");
    categories.add("Personal");
    categories.add("Travel");

    // Creating adapter for spinner
    ArrayAdapter<String> dataAdapter = new ArrayAdapter<String>(this,  android.R.layout.simple_spinner_item, categories);

    // Drop down layout style - list view with radio button
    dataAdapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);

    // attaching data adapter to spinner
    spinner.setAdapter(dataAdapter);
}

@Override
public void onItemSelected(AdapterView<?> parent, View view, int position, long id) {
    // On selecting a spinner item
    String item = parent.getItemAtPosition(position).toString();

    // Showing selected spinner item
    Toast.makeText(parent.getContext(), "Selected: " + item, Toast.LENGTH_LONG).show ();

}

public void onNothingSelected(AdapterView<?> arg0) {
    // TODO Auto-generated method stub

}

}

基本的に、ダイアログ ボックスとドロップダウン メニューの両方を使用する xml ファイルの 1 つが必要ですが、これらのコードを 1 つの Java ファイルに入れるのに問題があったため、2 つの異なる xml ファイル、post.xml を作成することにしました。 AndroidSpinnerExampleActivity にリンクされている AlertDialogActivity と spinex.xml にリンクされています。2つのJavaファイルを同じxmlにリンクしようとしましたが、Javaファイルの1つだけが何かをしているように見えたので、唯一の解決策は2つのコードを1つのJavaファイルに結合することだと思いますが、常にエラーが発生するようですこれを試すとき。

4

3 に答える 3

1

各パブリック クラスは、ファイル名がクラスと同じである別のファイルにある必要があります。しかし、クラスの 1 つを公開しないように変更すれば、OK です。ファイルをそのままにしておくのがベストプラクティスだと思います。クラスを簡単に見つけられるように、クラスを別のファイルに分けておくと、将来の保守性が向上します。

于 2012-12-08T16:09:18.447 に答える
1

基本的に、ダイアログ ボックスとドロップダウン メニューの両方を使用する xml ファイルの 1 つが必要ですが、これらのコードを 1 つの Java ファイルに入れるのに問題があったため、2 つの異なる xml ファイル、post.xml を作成することにしました。 AndroidSpinnerExampleActivity にリンクされている AlertDialogActivity と spinex.xml にリンクされています。

次の手順に従います。

  • Buttonとを含むレイアウト ファイルを作成しますSpinner
  • インターフェイスを拡張Activityして実装するクラスを作成するOnItemSelectedListener
  • 前に作成したレイアウトを上記のアクティビティのコンテンツ ビューとして設定します
  • onCreateあなたが持つメソッドで:

    setContentView(R.layout.combinedlayout); 
    // must be in the combinedlayout
    Button btnAlertTwoBtns = (Button) findViewById(R.id.btnAlertWithTwoBtns);
    btnAlertTwoBtns.setOnClickListener(new View.OnClickListener() {
       // the rest of the listener code from your first class.
    }
    // must be in the combinedlayout
    Spinner spinner = (Spinner) findViewById(R.id.spinner);
    
    // Spinner click listener
    spinner.setOnItemSelectedListener(this);
    
    // Spinner Drop down elements
    List<String> categories = new ArrayList<String>();
    categories.add("Automobile");
    categories.add("Business Services");
    categories.add("Computers");
    categories.add("Education");
    categories.add("Personal");
    categories.add("Travel");
    
    // Creating adapter for spinner
    ArrayAdapter<String> dataAdapter = new ArrayAdapter<String>(this,  android.R.layout.simple_spinner_item, categories);
    
    // Drop down layout style - list view with radio button
    dataAdapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
    
    // attaching data adapter to spinner
    spinner.setAdapter(dataAdapter);
    
于 2012-12-08T16:12:21.993 に答える
1

私はあなたの質問に少し混乱しています。これらのアクティビティを組み合わせて、ダイアログ ボックスを開くボタンと画面上のスピナーの両方を同時に持つ 1 つのアクティビティを作成しますか? もしそうなら、あなたはそれを行うことができるはずです。

ボタンとスピナーの両方を含む 1 つの xml ファイルを作成するだけです。

<Button
    .... />

<Spinner
    .... />

次に、スピナーとボタンを参照し、スピナーにデータを入力し、onItemSelectedListener をスピナーに割り当てるアクティビティを 1 つだけ持つことができます。ボタンは以前とまったく同じように処理できます。

import android.widget.AdapterView.OnItemSelectedListener;

public class AndroidSpinnerAndButtonExampleActivity extends Activity {
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.your_layout);

        // Spinner element
        Spinner spinner = (Spinner) findViewById(R.id.spinner);


        // Spinner Drop down elements
        List<String> categories = new ArrayList<String>();
        categories.add("Automobile");
        categories.add("Business Services");
        categories.add("Computers");
        categories.add("Education");
        categories.add("Personal");
        categories.add("Travel");

        // Creating adapter for spinner
        ArrayAdapter<String> dataAdapter = new ArrayAdapter<String>(this,  android.R.layout.simple_spinner_item, categories);

        // Drop down layout style - list view with radio button
        dataAdapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);

        // attaching data adapter to spinner
        spinner.setAdapter(dataAdapter);

        setSpinnerOnItemSelectedListener(spinner);

        Button btnAlertTwoBtns = (Button) findViewById(R.id.btnAlertWithTwoBtns);

        /**
         * Showing Alert Dialog with Two Buttons one Positive Button with Label
         * "YES" one Negative Button with Label "NO"
         */
        btnAlertTwoBtns.setOnClickListener(new View.OnClickListener() {

                public void onClick(View arg0) {
                // Creating alert Dialog with two Buttons

                AlertDialog.Builder alertDialog = new AlertDialog.Builder(this);

                // Setting Dialog Title
                alertDialog.setTitle("Confirm Delete...");

                // Setting Dialog Message
                alertDialog.setMessage("Are you sure you want delete this?");

                // Setting Icon to Dialog
                alertDialog.setIcon(R.drawable.delete);

                // Setting Positive "Yes" Button
                alertDialog.setPositiveButton("YES",
                    new DialogInterface.OnClickListener() {
                    public void onClick (DialogInterface dialog,int which) {
                    // Write your code  here to execute after dialog

                    Intent k = new  Intent(this, Camera.class);
                    startActivity(k);

                    Toast.makeText (getApplicationContext(), "You clicked on YES", Toast.LENGTH_SHORT).show();
                    }
                    });
                // Setting Negative "NO" Button
                alertDialog.setNegativeButton("NO",
                        new DialogInterface.OnClickListener() {
                        public void onClick (DialogInterface dialog,    int which) {
                        // Write your code  here to execute after dialog
                        Toast.makeText (getApplicationContext(), "You clicked on NO", Toast.LENGTH_SHORT).show();
                        dialog.cancel();
                        }
                        });

                // Showing Alert Message
                alertDialog.show();

                }
        });
    }

    public void setSpinnerOnItemSelectedListener(Spinner spinner){
        spinner.setOnItemSelectedListener(new OnItemSelectedListener(){
            @Override
            public void onItemSelected(AdapterView<?> parent, View view, int position, long id) {
                // On selecting a spinner item
                String item = parent.getItemAtPosition(position).toString();

                // Showing selected spinner item
                Toast.makeText(parent.getContext(), "Selected: " + item, Toast.LENGTH_LONG).show ();

            }

            public void onNothingSelected(AdapterView<?> arg0) {
                // TODO Auto-generated method stub

            }
    });
}

}
于 2012-12-08T16:20:24.003 に答える