0

嗨,感谢您查看这个新手问题。

我一直在寻找与我的问题相关的任何答案,但似乎找不到我遇到的问题,或者我可能需要有人解释我做错了什么。

无论如何,我的问题是我正在尝试学习 Intents 并在 putExtra、getExtra 等活动之间传递数据..,所以我创建了一个非常简单的应用程序,其功能是将所选日期从日期选择器传递到新活动并将其显示在屏幕上。我一定是做错了什么,因为当我单击按钮开始下一个活动时收到“android.content.res.Resources$NotFoundException”,我尝试了与其他已回答问题不同的代码但无济于事,我是否缺少某些东西?. 我的代码在下面,再次感谢你们所有人的任何答案。

第一项活动

package date.Picker;




import android.app.Activity; 
import android.content.Intent;
import android.os.Bundle; 
import android.view.View; 
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.DatePicker;   


public class DatePickerActivity extends Activity  {           

 int year;  
 int month;  
 int day; 

Button selectButton;
DatePicker datePicker;


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

    datePicker = (DatePicker) findViewById(R.id.datePicker);
    selectButton = (Button) findViewById(R.id.selectButton);
    selectButton.setOnClickListener(new OnClickListener()
    {           

public void onClick(View v){         

    Intent intent = new Intent(getApplicationContext(),        datePickerResult.class);

    month = datePicker.getMonth();  
    day = datePicker.getDayOfMonth(); 
    year = datePicker.getYear();


    intent.putExtra("year",year);  
    intent.putExtra("month",month);  
    intent.putExtra("day",day);  

    startActivity(intent);


    } 

    });
}
 }

第二次活动

package date.Picker;


import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.widget.TextView;

 public class datePickerResult extends Activity {

 int year;  
 int month;  
 int day; 

 TextView textView1;


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

textView1 = (TextView)findViewById(R.id.textView1); 

Bundle extras = getIntent().getExtras();  

    extras.getBundle("year"); 
    extras.getBundle("day");  
    extras.getBundle("month");  


    textView1.setText(year);
 }
}

因此,感谢您提供的任何答案或帮助。对不起,如果它有点浪费时间。

4

1 回答 1

1

弹出的第一件事是您调用了:

textView1.setText(year);

编译器将int year视为资源 ID,因此它会尝试查找具有该 ID 的资源。既然做不到,那就放弃。请尝试以下两行之一:

textView1.setText(year+"");
textView1.setText(Integer.valueOf(year));

接下来,您不会分配以下内容的返回值:

extras.getBundle("year"); 
extras.getBundle("day");  
extras.getBundle("month");

您需要做的是选择额外的,并将其分配给一个变量。像这样:

year = extras.getInt("year");
day = extras.getInt("day");
month = extras.getInt("month");

那应该正确地从您BundleIntent.

于 2012-06-25T00:05:38.223 回答