2014-01-16 55 views
3

可以说我有一个ListView,我在列表上设置了一个OnItemClickListener。什么是传递变量的最佳方式?通过Bundle的静态变量或传递变量?

静态变量:

public static String example; 

// onItemClick 
Intent intent = new Intent(Main.this, Details.class); 
Main.example = "example"; 
startActivity(intent); 

// in onCreate of Details 
String example = Main.example; 

软件包:

// onItemClick 
Intent intent = new Intent(Main.this, Details.class); 
intent.putExtra("example","example"); 
startActivity(intent); 

// in onCreate of Details 
Bundle extras = getIntent().getExtras(); 
String example = extra.getString("example"); 
// or 
Intent intent = getIntent(); 
String example = intent.getStringExtra("example"); 
+1

至于我,我会用捆绑选项。我的意思是,如果你只需要将某些事情从FIRST活动传递给SECOND,那么为什么要创建一个静态变量,这会比你需要的活跃得多呢? 顺便说一句,明显存在一个单行解决方案: 'String example = getIntent()。getStringExtra(“example”)'。 这对我来说似乎更加干净。 – Scadge

+0

@Scadge,这是我需要的开眼界,谢谢! – Nfear

+0

好,欢迎。但无论如何,我建议你阅读一些关于在活动之间传递变量的内容,可能就像第一条评论中给出的内容。 – Scadge

回答

2

除了使用static变量之外,它总是更好地使用Intent。每当你不想在整个应用程序中使用它时,使用静态变量。因为它占用了内存并且不容易垃圾收集。 因此,最好使用'Intent'将变量传递给其他Activity。

2

如果你想使用的变量都在应用程序,然后使用静态变量或单例类(即使吸气二传手模型班级单身人士)。
静态变量不容易垃圾收集,所以除非你需要,否则不要使用它。
如果您想要将数据从一项活动发送到其他项目(而不是通过应用程序),请使用绑定。

+1

请注意静态变量,因为Android可能会垃圾收集它们,特别是当设备内存不足时。 – s1m3n

+0

@ s1m3n Android可能不会垃圾收集它们,它只会杀死并重新启动应用程序的进程。 –

1

使用此code..It可能会帮助你..

public String example; 

    // onItemClick 
    Intent intent = new Intent(Main.this, Details.class); 
    intent.putExtra("id",example); 
    startActivity(intent); 


    // on Details activtiy 
    Intent intent =getIntent().getStringExtra("id")