繁体   English   中英

单击保存按钮时,editText中的值不会更改

[英]Value in editText doesn't change when save button is clicked

我在活动A中有两个widget ,一个是textView ,另一个是button 两者都将用于访问活动B。

而在活动B,我有一个editText ,二textView ,一个save button和一个image button

如果使用A中的按钮,则流程:A >> B >> C >>将值和图像从C返回到B,然后返回A。

如果在A中使用textView,则流程:将值和图像从A传递到B进行编辑,然后单击保存按钮以将编辑值和图像返回给A。

活动B

      public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.project);
        txt = (EditText) findViewById(R.id.editText36);
        txt1=(TextView)findViewById(R.id.textView57);
        Button b = (Button) findViewById(R.id.button17);
        addListenerOnButton();
        viewImage = (ImageView) findViewById(R.id.imageView2);
        if(getIntent().getBooleanExtra("bitmap",false)) //if textField in A clicked
        {
            viewImage.setImageBitmap(Global.img);
        }
        else
        {
            viewImage.setImageBitmap(null);
        }

        if(getIntent().getExtras()!=null) { // if have value pass from A
            final String Amount = getIntent().getExtras().getString("result");
            final String description1 = getIntent().getExtras().getString("description");

            txt1.setText(description1);
            txt.setText(Amount);
        }

        b.setOnClickListener(new View.OnClickListener() {  // Back to A
            public void onClick(View arg0) {
                Intent returnIntent = new Intent();
                a = "Project";
                text = txt.getText().toString(); // amount
                returnIntent.putExtra("text", text);
                returnIntent.putExtra("a", a);
                final int k1 = getIntent().getExtras().getInt("k");
                returnIntent.putExtra("k1", k1);
                returnIntent.putExtra("c",c);
            //   returnIntent.putExtra("image",Global.img);
                setResult(Activity.RESULT_OK, returnIntent);
                finish();
            }
        });

    }

   public void onActivityResult(int requestCode,int resultCode, Intent data)
        {  //receive value and image from C
            if(requestCode==PROJECT_REQUEST_CODE) {
                if(data!=null&&data.hasExtra("text")) {
                    c = data.getStringExtra("text");
                    txt1.setText(c);
                    viewImage.setImageBitmap(Global.img);
                }


            }
            else if (requestCode==CAMERA_REQUEST_CODE)
            {

            }
        }

活动A

 @Override
    public void onActivityResult(int requestCode, int resultCode, Intent data) {  //receive data from B
        int button = data.getIntExtra("k1", 0);

        if (button == 1) {
            switch (requestCode) {
                case 0:
                    result = data.getStringExtra("text");
                    name = data.getStringExtra("a");
                    description=data.getStringExtra("c");
                    if (Global.img != null) {
                        v.setImageBitmap(Global.img);
                    }

                     as=Long.parseLong(result);
                    c.setText("            " + name + "------" + "RM " + result);
                    break;
}

 c.setOnClickListener(new View.OnClickListener() { // if c is not null, it can intent to B.Otherwise it is not clickable
  @Override
      public void onClick(View view) {
      if ((name != null && name.trim().length() > 0) && (result != null && result.trim().length() > 0)) {
      Toast.makeText(getActivity().getApplicationContext(), "not null", Toast.LENGTH_LONG).show();
       if (name.equals("Project")) {
       Intent intent = new Intent(getActivity(), Project1.class);
       Global.img = null;
       v.setDrawingCacheEnabled(true);
       v.measure(View.MeasureSpec.makeMeasureSpec(0,               View.MeasureSpec.UNSPECIFIED),
       View.MeasureSpec.makeMeasureSpec(0, View.MeasureSpec.UNSPECIFIED));
       v.getMeasuredWidth(), v.getMeasuredHeight());
       v.buildDrawingCache(true);
       intent.putExtra("name", name);
       intent.putExtra("result", result);
       intent.putExtra("description", description);
       if (v.getDrawingCache() != null) {
       Bitmap bitmap = Bitmap.createBitmap(v.getDrawingCache());
       if (bitmap == null) {
       Log.e("TAG", "getDrawingCache() == null");
                             }
       Global.img = bitmap;
       startActivity(intent);
                                             }
                                         } 

  button1.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                // Toast.makeText(getActivity().getApplicationContext(), fk + "", Toast.LENGTH_LONG).show();
                AlertDialogRadio(a1);


            }
        });

 public void AlertDialogRadio(final int k) {
         final CharSequence[] ClaimsModel = {"B", "Petrol", "Car Maintenance"};

        AlertDialog.Builder alt_bld = new AlertDialog.Builder(getActivity());
        alt_bld.setTitle("Select a Claims");
        alt_bld.setSingleChoiceItems(ClaimsModel, -1, new DialogInterface
                .OnClickListener() {

            public void onClick(DialogInterface dialog, int item) {
                if (item == 0) {
                    Intent intent = new Intent(getActivity().getApplicationContext(), B.class);
                   intent.putExtra("k",k);
                    startActivityForResult(intent, 0);
                }else{...}
}

问题:单击textView并意图使用B时,保存按钮不会将更改的值和图像返回到A。该值和图像未更改。

看起来好像有一些缓存,因为这些缓存会保留旧状态而不更新。 我建议您尝试使用activity.recreate()函数,该函数强制活动创建一个新实例。

Activity.Recreate()

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM