【问题标题】:how to fix "The value true assigned to "variable" is never used" in Android Studio?如何在Android Studio中修复“从未使用过分配给“变量”的值true”?
【发布时间】:2021-10-17 04:51:14
【问题描述】:

我正在制作这个电子商务应用, 而且,我想要这种行为。 哪个是- 开场时,MainActivity中会有pitures。 还有一个搜索框。

当您单击图片时,它将带您进入 MainActivity2,并且此活动中有一个 ImageView,它将变为与我在 MainActivity 中单击的图片相同的图片。

当您在 MainActivity 的搜索框中搜索内容时, 如果您搜索的文本与 MainActivity2 中 arraylist 的字符串对象匹配, 它将用arraylist的字符串对象的对应图像更改MainActivity2的ImageView。

我希望,我犯了最小的语法错误,让你理解我的问题。 ????

无论如何, 对于第一种情况- 我尝试通过使用 On touchListeners、Intenets 和布尔值来完成这项工作。

正如您在下面的代码中看到的, 触摸我的 ImageView(iBtn1) 将触发 Intent intent1,使布尔 i1 =true,然后将布尔值发送到名为“t1”的下一个活动。

还有 , 对于第二种情况—— 我尝试使用 OnClickListeners、Intenets、arraylists 和布尔值。

首先, 我将 Edittext(input) 更改为字符串。 点击搜索按钮(igo), 它会触发 Intent 意图, 然后它将输入的字符串数据作为“eText”发送,并发送布尔数据x=true,作为“x”。

public class MainActivity extends AppCompatActivity {

EditText input;
ImageView iBtn1;
TextView tName, tPrice, tDescription;
ImageView iImage;
Button igo;
String eText;

boolean i1,x;


@SuppressLint("ClickableViewAccessibility")
@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);


            i1=false;
          
            x=false;

    igo=findViewById(R.id.go);

    iBtn1=findViewById(R.id.Btn1);
    
    input=findViewById(R.id.edittext);

    eText=input.getText().toString();

    igo.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {

            x=true;

            Intent intent=new Intent(MainActivity.this,MainActivity2.class);

            intent.putExtra("eText",eText);
            intent.putExtra("x",x);
            startActivity(intent);
        }
    });





    iBtn1.setOnTouchListener((v, event) -> {

        if (event.getAction() == MotionEvent.ACTION_DOWN) {

          v.setPressed(true);
          iBtn1.setBackground(ContextCompat.getDrawable(getApplicationContext(),R.drawable.ectangle_31_1));
            return true;

        } else if (event.getAction() == MotionEvent.ACTION_UP) {
            iBtn1.setBackground(ContextCompat.getDrawable(getApplicationContext(),R.drawable.ectangle_31));
            overridePendingTransition(android.R.anim.fade_in,android.R.anim.fade_out);
            i1=true;
            Intent intent1=new Intent(MainActivity.this,MainActivity2.class);



            intent1.putExtra("t1",i1);

            startActivity(intent1);
            v.performClick();
            v.setPressed(false);
            return false;
        } else {
            return false;
        }


    });

在下一个活动中-

对于我的第一个案例- 我的目标 ImageView 是 iImage。 但一开始,我所做的是,将(布尔)数据从之前的 Intent intent1 获取到当前 Intent I1。 然后我声明了一个包含该布尔数据值的变量(x1)。

然后我实现了一个 if 条件, 如果 x1 为真,它将改变 ImageView iImage 的图像资源。 否则,什么都不会发生。

而且,对于我的第二种情况-

我已经编好了这个数组列表。它包含作为 xName 的字符串数据和作为 xImageId 的 imageId。 无论如何, 首先,我使用 getIntent 从“eText”获取字符串数据和布尔数据。

然后执行if条件,我尝试将字符串数据与arraylist的字符串进行比较。 如果相等。 然后我告诉程序改变 ImageView 就像 case-1 一样

而且,我得到了数据

public class MainActivity2 extends AppCompatActivity {

String eName;

boolean bx;


ImageView iImage;
TextView iname;

Intent I1,intent;


ArrayList<x> xList;


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



    iImage=findViewById(R.id.xblock);
    iname=findViewById(R.id.xname);


    xList=new ArrayList<>();

    xList.add(new x("engineer",R.drawable.ectangle_32));
    xList.add(new x("Artists", R.drawable.ectangle_31));
    xList.add(new x("Singers",R.drawable.ectangle_33));
    xList.add(new x("Lawyer",R.drawable.ectangle_37));
    xList.add(new x("Writters",R.drawable.ectangle_38));
    xList.add(new x("developer",R.drawable.ectangle_36));




    I1=getIntent();
    intent=getIntent();


    eName = intent.getStringExtra("eText");
    bx = intent.getBooleanExtra("x",false);



    if (bx=true) {

      String yname = eName.toLowerCase();

      for (x yList : xList) {

       String xname = yList.getxName().toLowerCase();

          if (xname.equals(yname)) {
           iname.setText(yList.getxName());
           iImage.setImageResource(yList.getxImageId());

          }


      }
    }

    boolean x1= intent.getBooleanExtra("t1",false);

   if (x1=true){
        iImage.setImageResource(R.drawable.ectangle_31);

    }
   else{x1 = false;}
}

}

但是,我的应用崩溃了, 它无法到达 MainActivity2, 在MainActivity2中检查问题时,它说我的变量没有分配。

这里有什么问题?

非常感谢您的阅读,所有这些乱七八糟的文字。 如果我犯了任何错误,请告诉我。

【问题讨论】:

    标签: java android arrays android-studio class


    【解决方案1】:

    我认为问题在于获取布尔 bx 应该是这样的

    boolean bx = getIntent().getBooleanExtra(x);
    

    如果有用就试试

    【讨论】:

    • 但现在它说。表达式预期
    • 试试这个 boolean bx = false; bx = getIntent().getBooleanExtra(x);
    • 并检查该 getIntent 的来源是否在该活动中可能有该意图
    猜你喜欢
    • 2015-11-06
    • 1970-01-01
    • 1970-01-01
    • 2019-12-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多