在Android基本活动中使用Getters和Setter

时间:2015-06-18 09:40:02

标签: java android inheritance android-activity

我做了一个通用活动,我将在我的主要活动中延伸。

我希望能够更改基本活动中的字符串变量。

见下文。

public abstract class BaseActivity extends ActionBarActivity {

    private String name;

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

        TextView tv=(TextView) findViewById(R.id.textview1);
        tv.setText(getName());
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }
}

在课堂上,我将其扩展为。

public class MainActivity extends BaseActivity {


    @Override
    protected void onCreate(Bundle savedInstanceState) {

        String name="Jim";
        super.setName(name);
        super.onCreate(savedInstanceState);
    }
}

但是,当我设置TextView的文本时,我得到String名称的null异常。我以为这会在super.onCreate()之前调用super.setName()吗?谁可以帮我这个事?我只是以此为例来解决更复杂的问题。任何帮助都很适用

3 个答案:

答案 0 :(得分:1)

tv.setText(getName());

在setName( - )中写上面的行,如下所示

public void setName(String name) {
   tv.setText(name);
}

并删除BaseActivity

中的getter

onCreate

MainActivity()中
protected void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);
    String name="Jim";
    super.setName(name);
}

希望这会对你有所帮助。

答案 1 :(得分:0)

试试这种方式

 super.onCreate(savedInstanceState);
 String name="Jim";
 super.setName(name);

答案 2 :(得分:0)

您收到此错误,因为name为null并且setText(null)抛出异常。尝试 -

public String getName() { 
    if(name == null)
       return "";

    return name;
}

   super.onCreate(savedInstanceState);
   String name="Jim";
   super.setName(name);