【问题标题】:String from method to String in class字符串从方法到类中的字符串
【发布时间】:2017-01-30 19:41:38
【问题描述】:

可能我在做一些非常愚蠢的事情。

但是,我有一个 ZaalactivityString naam 的课程。

public class ZaalActivity extends MainActivity {
public String naam;

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

ListViewItemClick();

}

现在,当我尝试在我的子类中继承naam 时,它的值仍然是null,怎么可能在方法displayToastForID(long id) 中从naam 继承数据?

public void ListViewItemClick() {

   final ListView myList = (ListView) findViewById(R.id.ListviewCollection);
   myList.setOnItemClickListener(new AdapterView.OnItemClickListener() {
     @Override
     public void onItemClick(AdapterView<?> parent, View viewClicked, int position, long idInDB) {
         displayToastForID(idInDB);
         openWerkenInColActivity();
         //Toast.makeText(ZaalActivity.this, naam, Toast.LENGTH_LONG).show();
     }
   });
}

public void openWerkenInColActivity() {
    Intent intent = new Intent(ZaalActivity.this, WerkenInColActivity.class);
    startActivity(intent);
}


public void displayToastForID(long id) {
    Cursor cursor = myDB.getRowCollection(id);
    if (cursor.moveToFirst()){
        long IdDB = cursor.getLong(Integer.parseInt(DBAdapter.COL_COLLECTION_ID));
        naam = (cursor.getString(Integer.parseInt(DBAdapter.COL_COLLECTION_NAME)));

        Toast.makeText(ZaalActivity.this, naam, Toast.LENGTH_LONG).show();
    }

    cursor.close();
}

【问题讨论】:

  • 你需要做naam = "lala";而不是String naam = "lala";
  • 它似乎并没有真正改变任何东西。
  • 将代码发布到您实际调用ChangeNaam 的位置。我在这任何地方都没有看到电话。
  • 我不想添加我所有的代码,所以我只是发明了一个名字。但是,字符串 naam 在你的 displayToastForID(long id) 方法中。

标签: java android android-studio inheritance immutability


【解决方案1】:

把它改成这个。

public void ChangeNaam(){
  if(blabla==blabla){
   naam = "lala"
  }

【讨论】:

  • 欢迎来到 Stack Overflow!虽然您可能已经解决了这个用户的问题,但纯代码的答案对于将来遇到这个问题的用户来说并不是很有帮助。请编辑您的答案,以解释您的代码解决原始问题的原因。
【解决方案2】:

您被所谓的可变阴影所困扰。当您可能指的是== 时,您也在使用=

你需要做的:

public void ChangeNaam() {
    if(blabla == blabal) {
        naam = "lala";
    }
}

您的代码原样声明了一个名为 naam 的局部变量,与字段 naam 无关,将其隐藏,因此您只是更改了局部变量,但当然,该局部变量将超出范围并且在函数返回后收集垃圾,所以你看不出有什么区别,因为你没有改变你想要的naam

【讨论】:

  • 所以,我改变了它。但没有什么不同。我将添加整个方法。 'code public void displayToastForID(long id){ Cursor cursor = myDB.getRowCollection(id); if (cursor.moveToFirst()){ long IdDB = cursor.getLong(Integer.parseInt(DBAdapter.COL_COLLECTION_ID)); naam = (cursor.getString(Integer.parseInt(DBAdapter.COL_COLLECTION_NAME))); Toast.makeText(ZaalActivity.this, naam, Toast.LENGTH_LONG).show(); } cursor.close(); }'
  • 我把它添加到原来的问题中
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-06-11
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-01-13
相关资源
最近更新 更多