没有得到意图的额外

时间:2014-06-20 13:53:22

标签: android android-intent

我已经创建了一个应用程序,我需要将一些值传递给其他活动。因为我正在使用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"));
    }
}

3 个答案:

答案 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)