【问题标题】:JAVA-ANDROID STUDIO - What arguments should i put to run this method?JAVA-ANDROID STUDIO - 我应该使用什么参数来运行这个方法?
【发布时间】:2020-11-03 07:23:40
【问题描述】:

这已经困扰了我一段时间,因为我无法完全理解这些论点是如何工作的。 你能帮我弄清楚我应该提出什么论据吗? 我正在尝试从另一个类中提取我存储的变量。所以我创建了一个创建实例并从该类调用变量的方法。 但是当我尝试调用它要求参数的方法时

这是我的代码,我删除了我认为不相关的代码。

我存储变量的源类:

public class UserProfile {

    private int id;
    private String lname, fname, mname, desig, employee_id;
    private String profileImage;

    public UserProfile(int id, String lname, String fname, String mname, String desig, String employee_id, String profileImage) {
        this.id = id;
        this.lname = lname;
        this.fname = fname;
        this.mname = mname;
        this.desig = desig;
        this.employee_id = employee_id;
        this.profileImage = profileImage;
    }

    public int getId() {
        return id;
    }

    public String getLname() {
        return lname;
    }

    public String getFname() {
        return fname;
    }

    public String getMname() {
        return mname;
    }

    public String getDesig() {
        return desig;
    }

    public String getEmployee_id() {
        return employee_id;
    }

    public String getProfileImage() {
        return profileImage;
    }

}

我调用我的变量的班级:

public class TicketActivity extends AppCompatActivity implements AdapterView.OnItemSelectedListener {

    Spinner spnrViolations, spnrDLtype;
    TextView tvViolation1, tvViolation2, tvViolation3, tvViolation4, tvViolation5;
    ImageButton clearV1, clearV2, clearV3, clearV4, clearV5;
    TextView officerName, officerID, currentDate;


    String violation1TV, violation2TV, violation3TV, violation4TV, violation5TV;
    String clear ="Empty";

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_ticket);

        officerName = (TextView)findViewById(R.id.tv_ticket_area_officerName);

        loadUser();  //<<<--------- it asks here for an argument that i dont know what to put :(
    } //OnCreate END

    private void loadUser(UserProfile userProfile) {
        String fname, mname, lname;
        fname = userProfile.getFname();
        mname = userProfile.getMname();
        lname = userProfile.getLname();
        String fullname = fname + " " + mname + " " + lname;
        officerName.setText(fullname);

    }
 
}   ////// THIS IS THE END ////////// ------------------------------------>>>>>>>>>>>>>>>>>>>>>>>>

【问题讨论】:

    标签: java android-studio variables methods


    【解决方案1】:

    您需要一个 UserProfile 参数 - 下方的函数定义显示了这一点 - loadUser(UserProfile userProfile)。因此,您调用它的行应该类似于 loadUser(userProfile),其中 userProfile 是您已传递到活动或从单例调用的对象。

    我无法确定您是否正在尝试创建单例 (https://www.geeksforgeeks.org/singleton-class-java/)。如果您只想加载一个用户配置文件,然后能够从任何地方访问它,您需要一个单例。

    但是,如果您有许多 UserProfile 对象,则需要将要使用的对象传递给要访问它的类。有几种方法可以将对象传递到活动中,但这取决于您的项目设置。

    对于一些不受欢迎的建议,我建议不要使用诸如“clearV1”“clearV2”之类的变量名称。您可能想要一个地图/集合,或者将它们命名为更接近它们的实际用途。

    【讨论】:

      【解决方案2】:

      您使用UserProfile 作为参数定义了您的loadUser() 方法:

      private void loadUser(UserProfile userProfile) //here your method require instance of UserProfile
         .... 
      } 
      

      您必须从数据源中获取用户并输入为UserProfle。您可以使用数据库或列表/地图等。好的方法是创建一个类UserProfileService 和列表或其他集合来存储UserProfile 实例并实现方法loadUserByUsername(String username)。这是一个松散的概念,我不知道你到底想做什么。
      如果您愿意,我可以解释和编写这些方法和类的概念。

      【讨论】:

      • 嗨!谢谢您的帮助!我只想使用 getter 从我的 UserProfile 类中获取特定变量,然后将它们设置为 TextView,在我的情况下是我当前活动中的“officerName”。我还在适配器上使用该 UserProfile 类。生病尝试添加我如何在我的适配器上使用它
      • 好的,您是否将用户存储在任何地方?要加载用户,您必须为他们提供服务。我认为它是:loadUser(userProfileService.loadOfficerByName(officerName));‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎UserProfileService 将成为您的“数据库”。
      • 如果他们需要用户配置文件服务,那么他们将需要 ViewModel & Repository。 developer.android.com/jetpack/guide
      • 感谢@fr3ddie 的帮助,“服务”是java 术语吗?我试图使用你提到的 userProfileService.loadOfficerByName 但我是如何工作的。就我而言,我可能无法工作,因为我做错了。
      • @Brettins 感谢您的帮助!我承认在看到你的链接之前,我对你所说的一无所知。好吧,即使在通过指南之后,我仍然几乎一无所知。我还在研究它。我还有很多东西要学。感谢您提供链接指南。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2022-11-24
      • 2017-11-30
      • 1970-01-01
      • 1970-01-01
      • 2012-09-02
      • 1970-01-01
      • 2021-12-06
      相关资源
      最近更新 更多