Android studio 无法从其他类更新TextView
我的android项目有3个类MainActivity.java、itemlist.java和Bill.java 我从itemlist.java类创建了Bill类的对象,并从中传递了上下文。 所以,当我尝试从Bill.java类更新textview时,它不会更新,但当我从MainActivity更新textview时,它会工作 所以我的问题是如何让这个文本视图更新工作Android studio 无法从其他类更新TextView,android-studio,Android Studio,我的android项目有3个类MainActivity.java、itemlist.java和Bill.java 我从itemlist.java类创建了Bill类的对象,并从中传递了上下文。 所以,当我尝试从Bill.java类更新textview时,它不会更新,但当我从MainActivity更新textview时,它会工作 所以我的问题是如何让这个文本视图更新工作 package com.example.smit.databasedemo.Functions; import android
package com.example.smit.databasedemo.Functions;
import android.app.Activity;
import android.content.Context;
import android.os.Handler;
import android.support.v7.app.AppCompatActivity;
import android.view.LayoutInflater;
import android.view.View;
import android.widget.TextView;
import com.example.smit.databasedemo.MainActivity;
import com.example.smit.databasedemo.R;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
/**
* Created by Smit on 18-02-2020.
*/
public class Bill extends AppCompatActivity{
private LayoutInflater inflater;
private final View view;
public Bill(Context context){
inflater = (LayoutInflater) context.getSystemService(LAYOUT_INFLATER_SERVICE);
view = inflater.inflate(R.layout.activity_main,null);
}
这里使用从MainActivity传递的getApplicationContext()传递上下文
public void calculate(String bill){
final TextView billText = (TextView) view.findViewById(R.id.useless);
String text = (billText.getText().toString())+bill;
//Here the text is fetched from same textbox but fail's to update
Pattern p = Pattern.compile("\\d+");
Matcher m = p.matcher(text);
String[] amount= new String[2];
int i=0;
while(m.find()){
amount[i] = m.group();
i++;
}
int amount_prev = Integer.valueOf(amount[0]);
final int total = (amount_prev)+(Integer.valueOf(amount[1]));
billText.setText("Total Bill:"+total+"Rs");
//Cannot update this textbox
}
}
final Bill bill = new Bill(context);
//this is how its called
public void onClick(View v) {
counter++;
price= (finalViewHolder.price.getText().toString());
finalViewHolder.item.setText(String.valueOf(counter));
bill.calculate(price);
}
p、 s尝试在uiThread()上运行无效您必须通过构造函数传递上下文引用:
public Bill(Context context){
this.context=context;
//rest of your code...
}
还可以找到如下文本视图:
TextView billText = (TextView) ((Activity)context).findViewById(R.id.useless);
它以什么方式不更新?您是否收到任何错误,或者只是没有看到成员函数?没有,没有错误,只是您无法在Textview@Owl“Textview billText=(Textview)((活动)上下文)中看到文本的更改。findViewById(R.id.unavouse);”正在抛出错误android.app.Application无法强制转换为android.app.ActivityChanged Context到MainActivity.this,现在它像一个符咒一样工作谢谢@MZ97