我做了一个通用活动,我将在我的主要活动中延伸。
我希望能够更改基本活动中的字符串变量。
见下文。
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()吗?谁可以帮我这个事?我只是以此为例来解决更复杂的问题。任何帮助都很适用
答案 0 :(得分:1)
tv.setText(getName());
在setName( - )中写上面的行,如下所示
public void setName(String name) {
tv.setText(name);
}
并删除BaseActivity
在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);