我已经创建了一个应用程序,我需要将一些值传递给其他活动。因为我正在使用Intent.putExtras.I调试了我的代码,并且在这些值中存储了额外的内容但是当我得到额外的其他活动我得到空指针异常。
CustomListAdapter.Java
holder.bestCandidate.setOnClickListener (new View.OnClickListener () {
@Override
public void onClick(View v) {
HashMap<String, String> row = data.get (i);
intent = new Intent (context, BestCandidate.class);
intent.putExtra ("code", row.get ("code"));
intent.putExtra ("category", row.get ("category"));
BestCandidateDisplay display = new BestCandidateDisplay ();
display.execute (row.get ("iJobRequestorId"), "0");
}
});
ListClass
public class BestCandidate extends Activity {
private ListView lvBestCanditate;
BestCandidateCustomList customList;
Context c = this;
Intent i;
TextView jobCode, category;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate (savedInstanceState);
setContentView (R.layout.best_candidate_list);
initialize ();
}
private void initialize() {
i = new Intent ();
lvBestCanditate = (ListView) findViewById (R.id.listView);
jobCode = (TextView) findViewById (R.id.tv_job_code);
category = (TextView) findViewById (R.id.tv_category);
customList = new BestCandidateCustomList (c, SearchJobsCustomList.candidateArray);
lvBestCanditate.setAdapter (customList);
i = getIntent ();
Bundle extras = i.getExtras ();
jobCode.setText (extras.getString ("code"));
category.setText (extras.getString ("category"));
}
}
答案 0 :(得分:2)
好的,SharedPreferences
可能对您有帮助。
获得:
SharedPreferences prefs = this.getSharedPreferences("com.example.app",
Context.MODE_PRIVATE);
把:
String value= "some value";
prefs.edit().putString(pref_key, value).commit();
阅读你想要的地方:
String readValue = prefs.getString(pref_key, "dafault value");
答案 1 :(得分:1)
如果要将Activity
中的值传递给另一个,则必须在与调用{{1}时使用的对象相同的putExtra
对象上使用Intent
方法}}
如果您不想在为意图添加值之后启动其他活动,则应该这样做。
首先,定义一个全局startActivity()
对象:
Intent
然后,在private Intent myIntent;
方法中初始化它,例如:
onCreate
之后,在代码中使用它来添加值:
myIntent = new Intent (context, BestCandidate.class);
最后;用它来启动新的holder.bestCandidate.setOnClickListener (new View.OnClickListener () {
@Override
public void onClick(View v) {
HashMap<String, String> row = data.get (i);
myIntent.putExtra ("code", row.get ("code"));
myIntent.putExtra ("category", row.get ("category"));
BestCandidateDisplay display = new BestCandidateDisplay ();
display.execute (row.get ("iJobRequestorId"), "0");
}
});
;
Activity
答案 2 :(得分:0)
哦不。您无法在不运行的情况下向其他活动发送意图。 做那样的事情:
Intent intent = new Intent(getBaseContext(), SecondActivity.class);
intent.putExtra("EXTRA_NAME", someValue);
startActivity(intent)