0

我有这个代码,但它不起作用(强制关闭),我在 C# 中使用它,但它在 java 中不起作用

ClassA c = new ClassA(); c.TextView1.setText("test");

我需要从 ClassB 设置文本视图,是否可以在不使用 Intent 的情况下完成,因为 Intent 需要重新启动 Activity,所有数据都将丢失

任何人都可以为此建议一个代码

我也可以从 ClassB 中设置 ClassA 中的 int x 值吗

4

7 回答 7

2

是的,你可以做 -

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");

只需将此文本设置为您的TextViewAnd,B 类也应该扩展,Activity否则,getIntent()代码将不起作用。

于 2012-05-15T10:18:35.123 回答
0

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

在活动 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");

    }
    }
于 2012-05-15T10:39:17.837 回答
0

从 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);

希望这可以帮助

于 2012-05-15T10:29:59.513 回答
0

在 A 类中创建函数 returnThis()

ClassA returnThis()
{
  return this;
}

在 classB 中调用此函数并使用返回的参考集 textView 的 classA

于 2012-05-15T10:51:37.500 回答
0

尝试这个

在活动 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");
于 2012-05-15T10:24:56.773 回答
0

A类内

定义你的 TextView

private TextView1 txtView1;

在 onCreate 期间加载它

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

写一个二传手

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

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

c.setTextOnTextView1("Hello");
于 2012-05-15T10:17:16.007 回答
0

是的,它可以在不使用意图的情况下完成,使用静态方法/类成员

从 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)

于 2012-05-15T10:28:36.907 回答