【问题标题】:How to pass data from activity to class如何将数据从活动传递到类
【发布时间】:2018-09-18 10:59:28
【问题描述】:

这是我的活动代码

 @Override
    protected void onCreate(Bundle savedInstanceState) {
    super.onCreate( savedInstanceState );
    setContentView( R.layout.activity_engineer_recycler );
    String value = "hello";
    }

这是我的课程文件:

public class complaintAdapter{
 //code here
} 

现在谁能帮我把“你好”从活动传递到课堂

【问题讨论】:

  • 将值放入全局变量并在任何地方和您的班级中访问它。
  • 在你的类中添加一个 setter,然后调用它
  • 我的活动和班级是两个不同的文件@ZubariaAshraf
  • 没关系。您可以在您的类中将 String 变量设为静态,然后从活动中设置其值。 @NikhilLohar
  • @ZubariaAshraf:不必要地使用静态是不好的。

标签: android class android-activity pass-data


【解决方案1】:

可能有两种解决方案。

解决方案 1

像这样在对象创建期间使用来自 Activity 的数据。

在类中创建一个可以像这样获取所需数据的构造函数

public class complaintAdapter{
private String _value;
    public complaintAdapter(String value){
        _value = value;
        // use _value
    }
}

这可以在这样的活动中使用。

在类中创建一个方法,并使用数据作为参数调用它。

String value = "hello";
complaintAdapter complaintAdapterObj = new complaintAdapter(value);

解决方案 2

像这样在方法调用中使用来自活动的数据。

在类中创建一个方法,并使用数据作为参数调用它。

public class complaintAdapter{
    private String _value;
    public void sendData(String value){
        _value = value;
        // use _value
    }
}

这可以在这样的活动中使用

String value = "hello";
complaintAdapter complaintAdapterObj = new complaintAdapter();
complaintAdapterObj.sendData(value);

【讨论】:

    【解决方案2】:

    在您的 ComplaintAdapter 类中创建一个构造函数

    public class ComplaintAdapter{
     private String value;
    
     public ComplaintAdapter(String value){
        this.value = value;
     }
    }
    

    然后当你创建这个类的对象时,将值传递给构造函数

    ComplaintAdapter adapter = new ComplaintAdapter(value); 
    

    【讨论】:

    • 在 ComplaintAdapter 类中如何访问该子类之外的值
    • 该值在值变量中可用,您可以在此类中的任何位置访问它
    • 如果我的回答对你有帮助,请点赞我的回答
    【解决方案3】:

    要将任何值传递给类,您应该创建一个适当的构造函数。在这种情况下,您应该这样做:

    public class complaintAdapter {
    
      private String value;
    
      public complaintAdapter(String value) {
        this.value = value;
      }
    }
    

    然后你在你的活动中创建一个实例:

    complaintAdapter adapter = new complaintAdapter(value);
    

    附:正如 Java 代码约定规则所说 - 任何 java 类名都应该以大写符号开头,所以你最好将你的类重命名为 ComplaintAdapter

    【讨论】:

    • 在 ComplaintAdapter 类中如何访问该子类之外的值
    【解决方案4】:

    这样改:

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate( savedInstanceState );
        setContentView( R.layout.activity_engineer_recycler );
        String value = "hello";
        ComplaintAdapter adapter = new ComplaintAdapter(value);
    
        //access to value
        adapter.getValue();  
    }
    

    并以这种方式更改类:

    public class ComplaintAdapter{
         private String value;
    
         public ComplaintAdapter(String value){
            this.value = value;
         }
    
         public String getValue(){
            return this.value;
         }
    } 
    

    【讨论】:

    • 在 ComplaintAdapter 类中如何访问该子类之外的值
    • 您在称为适配器的 onCreate 方法中有引用。您可以将 setter 和 getter 方法添加到 ComplaintAdapter,然后像返回值的 adapter.getValue() 一样使用它们
    猜你喜欢
    • 2017-11-13
    • 1970-01-01
    • 2011-12-14
    • 1970-01-01
    • 2021-07-23
    • 2016-07-28
    • 1970-01-01
    • 1970-01-01
    • 2021-04-23
    相关资源
    最近更新 更多