Java 如何在我的onClick函数中正确设置findviewbyd

Java 如何在我的onClick函数中正确设置findviewbyd,java,android,android-layout,Java,Android,Android Layout,我的“findViewById”有问题,它发生在两行之间 new AlertDialog.Builder(DetailShareHoldingActivity.this).setTitle("Köp " + Portfolio.getPortfolio().getShareHolding(positionList).getName() + " Aktier").setView(addView).setPositiveButton("Köp", new DialogInterface.OnCl

我的“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) {
如果我把线路放在其他任何一个工作正常的地方,问题是我必须把线路放在我的位置,所以我不知道为什么它会抱怨? 这是我的听众

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();
        }
    });

是的,你当然有问题。您正在尝试在类定义中定义已声明的变量。。。这是不允许的

您的评论说,“我必须将代码准确地放在这里,以便在创建对话框时可以看到它,而不是在按下按钮时。”。这没有任何意义;您需要将代码放在实际的方法中

将定义移到类定义之外,然后移到方法中

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

难道不是所有的
findViewById()
s都应该
addView.findViewById()
s吗?@RaghavSood是的,修复了。谢谢