【发布时间】:2014-05-27 04:11:42
【问题描述】:
我正在使用从 SQLite 数据库检索的项目填充 Scrollview,并使用下面的代码为每一行动态生成 OnClickListener。我希望 OnClickListener 中的代码将控制权返回给使用 Intent 调用它的 Activity(MealActivity),并传回被点击的项目的 id。
我已尝试使用下面的第二个代码段进行此操作,但出现编译错误:“方法 startActivity(Intent, int) 未定义 OnClickListenerSelectPresetItem 类型”。
如何从我的 OnClickListener 调用原始 Activity?
public class SelectPresetItemActivity extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_select_preset_item);
if (savedInstanceState == null) {
getFragmentManager().beginTransaction()
.add(R.id.container, new PlaceholderFragment()).commit();
}
readRecords();
}
public void readRecords() {
LinearLayout linearLayoutRecords = (LinearLayout) findViewById(R.id.linearLayoutRecords);
linearLayoutRecords.removeAllViews();
List<preset_item> preset_item = new TableControllerPresetItem(this).read();
if (preset_item.size() > 0) {
for (preset_item obj : preset_item) {
long id = obj.id;
String PresetDesc = obj.preset_desc;
int PresetMinutes = obj.preset_minutes;
String textViewContents = PresetDesc + " - "
+ PresetMinutes + " minutes";
TextView textViewItem = new TextView(this);
textViewItem.setPadding(0, 10, 0, 10);
textViewItem.setText(textViewContents);
textViewItem.setTag(Long.toString(id));
textViewItem.setOnClickListener(new OnClickListenerSelectPresetItem());
linearLayoutRecords.addView(textViewItem);
}
}
else {
TextView locationItem = new TextView(this);
locationItem.setPadding(8, 8, 8, 8);
locationItem.setText("No records yet.");
linearLayoutRecords.addView(locationItem);
}
}listener
The method startActivity(Intent, int) is undefined for the type OnClickListenerSelectPresetItem
public class SelectPresetItemActivity extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_select_preset_item);
if (savedInstanceState == null) {
getFragmentManager().beginTransaction()
.add(R.id.container, new PlaceholderFragment()).commit();
}
readRecords();
}
public void readRecords() {
LinearLayout linearLayoutRecords = (LinearLayout) findViewById(R.id.linearLayoutRecords);
linearLayoutRecords.removeAllViews();
List<preset_item> preset_item = new TableControllerPresetItem(this).read();
if (preset_item.size() > 0) {
for (preset_item obj : preset_item) {
long id = obj.id;
String PresetDesc = obj.preset_desc;
int PresetMinutes = obj.preset_minutes;
String textViewContents = PresetDesc + " - "
+ PresetMinutes + " minutes";
TextView textViewItem = new TextView(this);
textViewItem.setPadding(0, 10, 0, 10);
textViewItem.setText(textViewContents);
textViewItem.setTag(Long.toString(id));
textViewItem.setOnClickListener(new OnClickListenerSelectPresetItem());
linearLayoutRecords.addView(textViewItem);
}
}
else {
TextView locationItem = new TextView(this);
locationItem.setPadding(8, 8, 8, 8);
locationItem.setText("No records yet.");
linearLayoutRecords.addView(locationItem);
}
}
这是 OnCLickListener 代码:
public class OnClickListenerSelectPresetItem implements OnClickListener {
public final static String EXTRA_MEAL_ID = "com.ian.mealtimer.MEAL_ID";
@Override
public void onClick(View view) {
Long selectedMealId = Long.valueOf(view.getTag().toString());
Intent myIntent = new Intent(view.getContext(),
MealActivity.class);
long mealId = -1;
myIntent.putExtra(EXTRA_MEAL_ID, selectedMealId);
startActivity(myIntent, 0);
}
}
【问题讨论】:
-
你为什么不试试 ((Activty)view.getContext()).startActivity(myIntent);
标签: java android android-intent onclicklistener