0

「findViewById」に問題があり、行間で発生しています。

 new AlertDialog.Builder(DetailShareHoldingActivity.this).setTitle("Köp " + Portfolio.getPortfolio().getShareHolding(positionList).getName() +  " Aktier").setView(addView).setPositiveButton("Köp", new DialogInterface.OnClickListener() {

そしてライン

public void onClick(DialogInterface dialog, int whichButton) {

正常に動作する場所にラインを配置すると、問題はラインを正確に配置する必要があるため、なぜ文句を言うのかわかりませんか? これが私のOnclickListenerです

buyButton = (Button)findViewById(R.id.buyButton);
    buyButton.setOnClickListener(new OnClickListener() {
        public void onClick(View view) {
        EditText tempEditText;    
        final View addView = getLayoutInflater().inflate(R.layout.shop_exsisting_share, null);
        new AlertDialog.Builder(DetailShareHoldingActivity.this).setTitle("Köp " + Portfolio.getPortfolio().getShareHolding(positionList).getName() +  " Aktier").setView(addView).setPositiveButton("Köp", new DialogInterface.OnClickListener() {
            tempEditText = (EditText)findViewById(R.id.nrOfSharesInPortfolioEdit);//Complains on findViewById "Return type for the method is missing" and I have to have the code exactly here so that it is visible when the dialog is created and not when the button is pressed.
            tempEditText= (EditText) findViewById(R.id.nrOfSharesInPortfolioEdit);
            tempEditText.setText(Portfolio.getPortfolio().getShareHolding(positionList).getNrOfSharesInPortfolio());
            System.out.println(Portfolio.getPortfolio().getShareHolding(positionList).getNrOfSharesInPortfolio());
            tempEditText= (EditText) findViewById(R.id.currentCourseEdit);
            tempEditText.setText(Double.toString(Portfolio.getPortfolio().getShareHolding(positionList).getCurrentRate()));

            public void onClick(DialogInterface dialog, int whichButton) {
                System.out.println("Button pressed köp ");
            }
        }).setNegativeButton("Avbryt", null).show();
        }
    });
4

1 に答える 1

2

はい、もちろん問題があります。クラス定義内ですでに宣言されている変数を定義しようとしています...これは許可されていません。

あなたのコメントは、「ボタンが押されたときではなく、ダイアログが作成されたときに表示されるように、コードを正確にここに配置する必要があります。」と述べています。これは意味がありません。実際のメソッドにコードを含める必要があります。

定義をクラス定義の外に移動し、代わりにメソッドに移動します。

tempEditText = (EditText) addView.findViewById(R.id.nrOfSharesInPortfolioEdit);
tempEditText = (EditText) addView.findViewById(R.id.nrOfSharesInPortfolioEdit);
tempEditText.setText(Portfolio.getPortfolio().getShareHolding(positionList).getNrOfSharesInPortfolio());
System.out.println(Portfolio.getPortfolio().getShareHolding(positionList).getNrOfSharesInPortfolio());
tempEditText = (EditText) addView.findViewById(R.id.currentCourseEdit);
tempEditText.setText(Double.toString(Portfolio.getPortfolio().getShareHolding(positionList).getCurrentRate()));

new AlertDialog.Builder(DetailShareHoldingActivity.this)
    .setTitle("Köp " + Portfolio.getPortfolio().getShareHolding(positionList).getName() +  " Aktier")
    .setView(addView)
    .setPositiveButton("Köp", new DialogInterface.OnClickListener() {
        public void onClick(DialogInterface dialog, int whichButton) {
            System.out.println("Button pressed köp ");
        }
    })
    .setNegativeButton("Avbryt", null)
    .show();
于 2012-12-05T19:35:38.860 に答える