ListViewをアクティビティに挿入するのに問題があります。ListActivityから拡張したリストを挿入しました。これは問題なく機能します。行を選択して別のアクティビティに転送する方法も知っています。しかし、今回は機能しません。行から行へと移動してすべてをデバッグし、LogCatからのエラーメッセージを常にチェックしようとしました。私もだめです。でも今はどうしたらいいのかわからない。すべてが正しい場所にあるようです。
データベース(2番目のブロック)から要素をログに記録することで、最後の要素が空であることがわかりました。そのため、forループを1つ減らしました。したがって、メソッド「initVars()」全体が機能し、最後まで機能し、再び「onCreate」ブロックに戻って機能を停止します。エラーメッセージをコピーするだけです。おそらく、それが何を意味するのかを知っている人がいるでしょう。
public class ActivityDetail extends Activity {
TextView tvDefinition, tvDurationSingle, tvDurationMultiplied, tvSubunits;
ListView lvExecution;
String executions[];
ArrayList<Execution> allExecutionsFromDatabase;
ArrayAdapter<String> adapter;
UserInformation userInfo = UserInformation.getInstance();
MyFramework myFramework;
// Extras from intent
String definition;
int activityId, durationSingle, durationMultiplied, subunits;
@Override
protected void onCreate(Bundle savedInstanceState) {
// TODO Auto-generated method stub
super.onCreate(savedInstanceState);
setContentView(R.layout.activitydetail);
initVars();
}
private void initVars() {
myFramework = new MyFramework();
// load extras into variables
definition = myFramework.getExtrasString("activitiyDefinition",
getIntent().getExtras());
activityId = myFramework.getExtrasInt("activityId", getIntent()
.getExtras());
durationSingle = myFramework.getExtrasInt("activityDuration",
getIntent().getExtras());
subunits = myFramework.getExtrasInt("activitySubunits", getIntent()
.getExtras());
durationMultiplied = durationSingle * subunits;
// init ui elements
tvDefinition = (TextView) findViewById(R.id.tvActDetailDefinition);
tvDurationSingle = (TextView) findViewById(R.id.tvActDetailDurationSingle);
tvDurationMultiplied = (TextView) findViewById(R.id.tvActDetailDurationMultiplied);
tvSubunits = (TextView) findViewById(R.id.tvActDetailSubunits);
lvExecution = (ListView) findViewById(R.id.lvActDetail);
// get executions from db
ActivityDB entries = new ActivityDB(this);
entries.open();
allExecutionsFromDatabase = entries.getSpecificExecutions(
userInfo.getUserId(), activityId);
entries.close();
// set list array to same size as allExecutionsFromDatabase
executions = new String[allExecutionsFromDatabase.size()];
// insert definition of each execution in executions for listview
for (int i = 0; i < allExecutionsFromDatabase.size() - 1; i++) {
Execution e = new Execution();
e = allExecutionsFromDatabase.get(i);
executions[i] = e.getTimestamp();
Log.e("DEFINITION", "" + e.getTimestamp());
}
// init array adapter
adapter = new ArrayAdapter<String>(ActivityDetail.this,
android.R.layout.simple_list_item_1, executions);
// add adapter and onClickListener to listview
lvExecution.setAdapter(adapter);
lvExecution.setOnItemClickListener(new OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, View view,
int position, long id) {
Toast.makeText(getApplicationContext(),
((TextView) view).getText(), Toast.LENGTH_SHORT).show();
String a = ((TextView) view).getText().toString();
if (a == "Foo")
Toast.makeText(getApplicationContext(), "Foobar! xD",
Toast.LENGTH_SHORT).show();
}
});
}
LOCCAT
01-08 23:55:25.361: E/AndroidRuntime(23627): FATAL EXCEPTION: main
01-08 23:55:25.361: E/AndroidRuntime(23627): java.lang.NullPointerException
01-08 23:55:25.361: E/AndroidRuntime(23627): at android.widget.ArrayAdapter.createViewFromResource(ArrayAdapter.java:355)
01-08 23:55:25.361: E/AndroidRuntime(23627): at android.widget.ArrayAdapter.getView(ArrayAdapter.java:323)
01-08 23:55:25.361: E/AndroidRuntime(23627): at android.widget.AbsListView.obtainView(AbsListView.java:1430)
01-08 23:55:25.361: E/AndroidRuntime(23627): at android.widget.ListView.makeAndAddView(ListView.java:1745)
01-08 23:55:25.361: E/AndroidRuntime(23627): at android.widget.ListView.fillDown(ListView.java:670)
01-08 23:55:25.361: E/AndroidRuntime(23627): at android.widget.ListView.fillFromTop(ListView.java:727)
01-08 23:55:25.361: E/AndroidRuntime(23627): at android.widget.ListView.layoutChildren(ListView.java:1598)
01-08 23:55:25.361: E/AndroidRuntime(23627): at android.widget.AbsListView.onLayout(AbsListView.java:1260)
01-08 23:55:25.361: E/AndroidRuntime(23627): at android.view.View.layout(View.java:7175)
01-08 23:55:25.361: E/AndroidRuntime(23627): at android.widget.LinearLayout.setChildFrame(LinearLayout.java:1254)
01-08 23:55:25.361: E/AndroidRuntime(23627): at android.widget.LinearLayout.layoutVertical(LinearLayout.java:1130)
01-08 23:55:25.361: E/AndroidRuntime(23627): at android.widget.LinearLayout.onLayout(LinearLayout.java:1047)
01-08 23:55:25.361: E/AndroidRuntime(23627): at android.view.View.layout(View.java:7175)
01-08 23:55:25.361: E/AndroidRuntime(23627): at android.widget.FrameLayout.onLayout(FrameLayout.java:338)
01-08 23:55:25.361: E/AndroidRuntime(23627): at android.view.View.layout(View.java:7175)
01-08 23:55:25.361: E/AndroidRuntime(23627): at android.widget.LinearLayout.setChildFrame(LinearLayout.java:1254)
01-08 23:55:25.361: E/AndroidRuntime(23627): at android.widget.LinearLayout.layoutVertical(LinearLayout.java:1130)
01-08 23:55:25.361: E/AndroidRuntime(23627): at android.widget.LinearLayout.onLayout(LinearLayout.java:1047)
01-08 23:55:25.361: E/AndroidRuntime(23627): at android.view.View.layout(View.java:7175)
01-08 23:55:25.361: E/AndroidRuntime(23627): at android.widget.FrameLayout.onLayout(FrameLayout.java:338)
01-08 23:55:25.361: E/AndroidRuntime(23627): at android.view.View.layout(View.java:7175)
01-08 23:55:25.361: E/AndroidRuntime(23627): at android.view.ViewRoot.performTraversals(ViewRoot.java:1140)
01-08 23:55:25.361: E/AndroidRuntime(23627): at android.view.ViewRoot.handleMessage(ViewRoot.java:1859)
01-08 23:55:25.361: E/AndroidRuntime(23627): at android.os.Handler.dispatchMessage(Handler.java:99)
01-08 23:55:25.361: E/AndroidRuntime(23627): at android.os.Looper.loop(Looper.java:123)
01-08 23:55:25.361: E/AndroidRuntime(23627): at android.app.ActivityThread.main(ActivityThread.java:3683)
01-08 23:55:25.361: E/AndroidRuntime(23627): at java.lang.reflect.Method.invokeNative(Native Method)
01-08 23:55:25.361: E/AndroidRuntime(23627): at java.lang.reflect.Method.invoke(Method.java:507)
01-08 23:55:25.361: E/AndroidRuntime(23627): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:839)
01-08 23:55:25.361: E/AndroidRuntime(23627): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:597)
01-08 23:55:25.361: E/AndroidRuntime(23627): at dalvik.system.NativeStart.main(Native Method)
01-09 00:00:25.431: I/Process(23627): Sending signal. PID: 23627 SIG: 9