如何从另一个类设置TextView(Android)[复制]

qyswt5oh  于 2023-02-27  发布在  Android
关注(0)|答案(7)|浏览(92)
    • 此问题在此处已有答案**:

(53个答案)
How to pass a value from one Activity to another in Android? [duplicate](7个答案)
2天前关闭。
我有这段代码,但它不工作(强制关闭),我在C#中使用这段代码,但它在Java中不工作
ClassA c =新的ClassA();c.文本视图1.setText("测试");
我需要从ClassB设置文本视图,是否可以在不使用Intent的情况下完成,因为Intent需要重新启动Activity,所有数据都将丢失
有谁能建议一个代码吗
还可以从ClassB设置ClassA中的int x值

cnh2zyt3

cnh2zyt31#

是的,你可以-

Intent i = new Intent(classA.this, classB.class);
Bundle bundle = new Bundle();
bundle.putExtra("name For Identification", "Value);
i.putExtras(bundle);
startActivity(i);

在你的第二节课上,我是说B班

Bundle bundle = getIntent().getExtras("name for Identification");
String text = bundle.getString("name For Identification");

只需将此文本设置为您的TextView,并且,类B也应扩展Activity,否则,getIntent()代码将无法工作。

xdnvmnnf

xdnvmnnf2#

A类内
定义文本视图

private TextView1 txtView1;

在onCreate期间加载它

txtView1 = (TextView) findViewById(R.id.txtView1);

编写一个setter

public void setTextOnTextView1(String text) {
  txtView1.setText(text);
}

在其他课程中,您现在可以

c.setTextOnTextView1("Hello");
7z5jn7bk

7z5jn7bk3#

试试这个
将此添加到活动1中

Intent myIntent = new Intent(Activity1.this, Activity2.class);
       myIntent.putExtra("UserId",UserId);
       myIntent.putExtra("UserName",UserName);
       startActivity(myIntent);

将此添加到活动2中

Intent intent = getIntent();
UserId=intent.getStringExtra("UserId");
UserName=intent.getStringExtra("UserName");
nbewdwxp

nbewdwxp4#

意图从A类转移到B类

Intent toClassB = new Intent(classA.this,classB.class);
toClassB.putExtra("StringId","value"); 
startActivity(toClassB);

//get value
Intent intent = getIntent();
String getValue = intent.getStringExtra("StringId");
//set text
textView.setText(getValue);

希望这能有所帮助

g0czyy6m

g0czyy6m5#

要在两个活动之间传递值,您可以使用共享首选项,如下所示
活动A:

public class activityA extends Activity{

private  final String MY_value = "value";//variable used for shared preference
@Override
    public void onCreate(Bundle savedInstanceState)
    {
SharedPreferences myPrefs = getBaseContext().getSharedPreferences("myPrefs", MODE_WORLD_READABLE);
                    SharedPreferences.Editor prefsEditor = myPrefs.edit();
                    prefsEditor.putString(MY_value, "xyz");
                    prefsEditor.commit();
}
}

在活动B中,您可以按如下方式检索该值:

public class activityB extends Activity{

    private  final String MY_value = "value";//variable used for shared preference
    @Override
        public void onCreate(Bundle savedInstanceState)
        {
    SharedPreferences myPrefs1 = this.getSharedPreferences("myPrefs", MODE_WORLD_READABLE);
                roadworthynumber = myPrefs1.getString(MY_value, "value");

    }
    }
gorkyyrv

gorkyyrv6#

是的,它可以不使用意图,使用静态方法/类的成员
从ClassA的静态方法获取TextView对象,并以类似方式在ClassA中定义静态方法setX(int x)方法
比如说

class ClassA{

static TextView tv; //this should be intialized in your code via findViewByID or by code depneds

static int x;

static public TextView getTextView(){
return tv;
}

static public void setX(int xP){
x = xP;
}

}

您可以从ClassB调用ClassA. getTextView()和ClassB. setX(12)

xxhby3vn

xxhby3vn7#

在类A中创建函数returnThis()

ClassA returnThis()
{
  return this;
}

在classB中调用此函数,并使用返回的引用设置classA的textView

相关问题