【问题标题】:how to set TextView from another Class (Android) [closed]如何从另一个类(Android)设置 TextView [关闭]
【发布时间】:2012-05-15 10:13:26
【问题描述】:

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

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

我需要从 ClassB 设置文本视图,可以吗? 不使用意图 因为Intent需要重新启动Activity,所有数据都会丢失

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

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

【问题讨论】:

标签: java android


【解决方案1】:

是的,你可以这样做 -

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() 代码将不起作用。

【讨论】:

    【解决方案2】:

    A 类内

    定义你的 TextView

    private TextView1 txtView1;
    

    在 onCreate 期间加载它

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

    写一个setter

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

    你现在可以在其他班级

    c.setTextOnTextView1("Hello");
    

    【讨论】:

    • 您愿意提供日志猫跟踪吗?如果视图不可见,你是否给它充气?
    • 日志跟踪不能放在这里非常抱歉
    【解决方案3】:

    试试这个

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

    【讨论】:

      【解决方案4】:

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

      希望对你有帮助

      【讨论】:

        【解决方案5】:

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

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

        【讨论】:

          【解决方案6】:

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

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

          【讨论】:

            【解决方案7】:

            在A类中创建函数returnThis()

            ClassA returnThis()
            {
              return this;
            }
            

            在classB中调用这个函数并使用classA的返回引用集textView

            【讨论】:

              猜你喜欢
              • 2016-01-27
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 2021-07-31
              • 1970-01-01
              • 2012-07-27
              相关资源
              最近更新 更多