Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/wordpress/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 从android中的超类继承数据_Java_Android - Fatal编程技术网

Java 从android中的超类继承数据

Java 从android中的超类继承数据,java,android,Java,Android,下面是我的继承活动示例。正如日志显示的那样,我无法从我的超类中获得正确的数据 我的超级班 public class MainActivity extends Activity { public String exampleString; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); se

下面是我的继承活动示例。正如日志显示的那样,我无法从我的超类中获得正确的数据

我的超级班

public class MainActivity extends Activity {

    public String exampleString;

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


        Button button = (Button) findViewById(R.id.NewButton);
        button.setOnClickListener(new OnClickListener(){

        @Override
        public void onClick(View v){

            exampleString = "Test and test";    

            Log.e("Mytag", "here "+ exampleString);
            Intent intent = new Intent();
            intent.setClass(getBaseContext(), Activity2.class);
            startActivity(intent);              
        }
    });



}
}
我的小班

public class Activity2 extends MainActivity {

@Override
    public void onCreate(Bundle savedInstanceState){
        super.onCreate(savedInstanceState);
        setContentView(R.layout.layout2);

        Log.e("Mytag", "here "+ exampleString);
}
}
我的日志

08-28 13:27:05.908: D/gralloc_goldfish(889): Emulator without GPU emulation detected.
08-28 13:27:08.677: E/Mytag(889): here Test and test
08-28 13:27:09.408: E/Mytag(889): here null
为什么子类获取exampleString的null值?
有人能帮忙吗?谢谢

,因为当你实例化你的超类或它的任何子类时,你会得到一个exampleString的新实例

将变量设为静态,然后类将共享它

public static String exampleString;
但是,在您的示例中,您似乎只希望向另一个活动发送一个字符串,如下所示:

Intent intent = new Intent();
intent.putExtra("myString", "my example argument");
intent.setClass(getBaseContext(), Activity2.class);
startActivity(intent);
并在其他课程中接收:

public void onCreate(Bundle savedInstanceState){
    super.onCreate(savedInstanceState);
    setContentView(R.layout.layout2);

    Bundle args = getIntent().getExtras();
    String example = args.getString("myString");
    Log.e("Mytag", "here " + example);
}

Activity2将输出:这里是我的示例参数

您正在onClick方法中设置exampleString变量

在onClick方法中调用新活动时,实际上是在创建Activity2的新实例。如果您从未在exampleString中设置值,为什么这个新实例中应该有一个值

继承是将功能和数据从一个超类扩展到一个子类的好方法,但它绝不允许单独的实例共享相同的数据


因为在第二个实例中,您从未设置exampleText,所以您的日志打印输出显示为空。

就是这样。我对java完全是个新手。谢谢你,再次谢谢你。是的,这样可以节省继承的时间。@WenhaoWu只要记住尽可能避免使用静态:它们往往会导致内存泄漏。谢谢。我明白了。