【问题标题】:how to access a variable of an private inner class to oncreate() method [closed]如何访问私有内部类的变量到oncreate()方法[关闭]
【发布时间】:2014-01-20 10:55:57
【问题描述】:

这里,如何打印Activity的oncreate()方法中的ss值?

    MainActivity extends Activity {

      public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        this.setContentView(R.layout.activity_main);
        view1 = (TextView)findViewById(R.id.ss_View);

        //view.setText(String.valueOf(ss)); 
      }

      private class x {
        @Override
        public void func() {
         int ss = 3;
        }
      }
    }

【问题讨论】:

  • 考虑一些 Java 教程 :) ss 根本无法访问,因为它是一个仅存在于 func 方法中的局部变量
  • 我需要 oncreate() 方法中 ss 的值,以便在那里进行进一步的操作............
  • 有没有办法存在.....如果我把它变成全球性的?喜欢...使用构造函数?
  • 为什么需要私人课程??

标签: java android scope inner-classes


【解决方案1】:

使ss成为x类的实例变量,并添加getter方法:

public class InnerActivity extends Activity {

    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        this.setContentView(R.layout.activity_main);
        TextView view = (TextView) findViewById(R.id.clickableButtonWithBorder);

        x xInstance = new x();
        xInstance.func();
        view.setText(String.valueOf(xInstance.getSS()));

    }

    private class x {
        int ss;

        public void func() {
            ss = 3;
        }

        public Integer getSS()
        {
            return ss;
        }
    }

}

【讨论】:

    【解决方案2】:

    你不能这样做。 SS 变量仅在您的方法中本地创建。 创建 ss 变量作为类的字段并生成 getter。 然后你就可以得到你的变量了。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-09-20
      • 1970-01-01
      • 2013-02-14
      • 1970-01-01
      • 1970-01-01
      • 2021-04-03
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多