java - 将弹出窗口中的 EditText 设置为等于先前 Activity 的字符串 - 错误 :(92, 30) 错误:不兼容的类型: double 无法转换为字符串

标签 java android

所以我正在制作这个针织计算器应用程序。基于几个输入,应用程序在弹出窗口中输出结果。 这是代码

public class Rectangular extends Activity {

EditText length;
EditText width;
EditText edge;
EditText roll;
TextView tt;
Button calculate;
double w=0;
double x=0;
double y=0;
double z=0;
double v=0;


@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_rectangular);
}



    public void onClick(View arg0) {
        final Button btnOpenPopup = (Button)findViewById(R.id.button8);
        LayoutInflater layoutInflater
                = (LayoutInflater)getBaseContext()
                .getSystemService(LAYOUT_INFLATER_SERVICE);
        View popupView = layoutInflater.inflate(R.layout.pop_up, null);
        final PopupWindow popupWindow = new PopupWindow(
                popupView,
                ViewGroup.LayoutParams.FILL_PARENT,
                ViewGroup.LayoutParams.FILL_PARENT);
        popupWindow.showAtLocation(popupView, Gravity.CENTER, 0, 0);


        Button btnDismiss = (Button)popupView.findViewById(R.id.button9);
        btnDismiss.setOnClickListener(new Button.OnClickListener(){

            @Override
            public void onClick(View v) {
                // TODO Auto-generated method stub
                popupWindow.dismiss();
            }});

        popupWindow.showAsDropDown(btnOpenPopup, 50, -30);

    };





private void initControls()
{
    length=(EditText)findViewById(R.id.editText);
    width=(EditText)findViewById(R.id.editText2);
    edge=(EditText)findViewById(R.id.editText3);
    roll=(EditText)findViewById(R.id.editText4);
    tt=(TextView)findViewById(R.id.editText6);
    calculate=(Button)findViewById(R.id.button8);
    calculate.setOnClickListener(new Button.OnClickListener()
    {public void onClick
                (View v) { calculate();}});
}

 EditText input;
 EditText output;
 Button one;


private void calculate()
{
    w=Double.parseDouble(length.getText().toString());
    x=Double.parseDouble(width.getText().toString());
    y=Double.parseDouble(edge.getText().toString());
    v=Double.parseDouble(roll.getText().toString());
    z=((x+y+y)*(y+y+w))/v;
    tt.setText(Double.toString(z));
}

xml(弹出窗口):

 <?xml version="1.0" encoding="utf-8"?>
 <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:orientation="vertical"
    android:weightSum="1"
    android:background="@android:color/darker_gray">

 <View
     android:layout_width="0dp"
     android:layout_height="1dp"
     android:layout_weight="0.4" />

 <EditText
     android:layout_width="match_parent"
     android:layout_height="wrap_content"
     android:inputType="numberDecimal"
     android:ems="10"
     android:id="@+id/editText6" />

 <View
     android:layout_width="0dp"
     android:layout_height="1dp"
     android:layout_weight="0.15" />

 <TextView
     android:layout_width="wrap_content"
     android:layout_height="wrap_content"
     android:text="@string/notice"
     android:id="@+id/textView7"
     android:textSize="18sp" />

 <View
     android:layout_width="0dp"
     android:layout_height="1dp"
     android:layout_weight="0.05" />

 <Button
     android:layout_width="wrap_content"
     android:layout_height="wrap_content"
     android:text="@string/dones"
     android:id="@+id/button9"
     android:layout_gravity="right" />

 </LinearLayout>

现在,我遇到的问题是我似乎无法将弹出窗口中的编辑文本设置为等于计算,我希望有人可以帮助我或指出正确的方向

更新: 所以我让 editText 显示字母 Z 但我希望它显示结果,但是当我这样做时,我得到了 double 无法在第一行转换为字符串的异常

private String result = (z);
 private void calculate()
{
    w=Double.parseDouble(length.getText().toString());
    x=Double.parseDouble(width.getText().toString());
    y=Double.parseDouble(edge.getText().toString());
    v=Double.parseDouble(roll.getText().toString());
    z=((x+y+y)*(y+y+w))/v;
    result = Double.toString(z);
}

知道该怎么做吗?

最佳答案

由于 EditText 位于弹出布局中,因此您必须通过膨胀的弹出 View 找到它。

EditText tt = (EditText) popupView.findViewById(R.id.editText6);

并在弹出弹出窗口的同时填充您的EditText:

tt.setText(Double.toString(z));

关于java - 将弹出窗口中的 EditText 设置为等于先前 Activity 的字符串 - 错误 :(92, 30) 错误:不兼容的类型: double 无法转换为字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31078793/

相关文章:

java - 如何使用 StackMob 查询列表填充 listView

java - 如何将 MVVM 与 App/activity 和 AsyncTask 的 UI 组件一起使用

java - 根据时基设置时间选择器

java - 在java中拆分解析文本文件

android - 提高 ListView 从 SD 加载图片到 ListView 时的效率

android - 如何根据日期和时间android每半小时重置一次计数?

java - mysql 查询缓存

Android - 安装失败,消息为 : INSTALL_PARSE_FAILED_MANIFEST_MALFORMED

android - 动画 child 回到原来的位置

android - 在布局内的运行时多次膨胀一个布局