1

Android 2.3.3

ホームとヒストリーの2つのアクティビティがあります。履歴に動的リストビュー(カスタムアダプタを使用)があり、リストビューにデータがあります。アイテムがクリックされると、アイテムの値がホームアクティビティに反映されることになっています(テキストビューとエディットテキストが入力されている必要があります)。

以下はコードです...

@Override
    public void onItemClick(AdapterView<?> arg0, View arg1, int arg2, long arg3) {
        // TODO Auto-generated method stub

     TextView txtExp = (TextView) arg1.findViewById(R.id.txtView_History_Expression);
     TextView txtRes = (TextView) arg1.findViewById(R.id.txtView_History_Result);

     String ret_Exp = txtExp.getText().toString();
     String ret_Res = txtRes.getText().toString();

     System.out.println("exp = "+ret_Exp+"   res = "+ret_Res);

     ma = new MainActivity();
     TextView ma_prev = (TextView) ma.findViewById(R.id.txtViewPrevious);
     EditText ma_Res = (EditText) ma.findViewById(R.id.edtxtInput);

     ma_prev.setText("");
     ma_prev.setText(ret_Exp);

     ma_Res.setText("");
     ma_Res.setText(ret_Res);

    }

上記のコードを使用すると、nullpointer例外が発生します...

03-17 14:39:42.199: E/AndroidRuntime(20411): java.lang.NullPointerException
03-17 14:39:42.199: E/AndroidRuntime(20411):    at android.app.Activity.findViewById(Activity.java:1647)
03-17 14:39:42.199: E/AndroidRuntime(20411):    at com.mobilevoiceapps.advancedvoicecalculatorfree.History.onItemClick(History.java:207)
03-17 14:39:42.199: E/AndroidRuntime(20411):    at android.widget.AdapterView.performItemClick(AdapterView.java:284)
03-17 14:39:42.199: E/AndroidRuntime(20411):    at android.widget.ListView.performItemClick(ListView.java:3744)
03-17 14:39:42.199: E/AndroidRuntime(20411):    at android.widget.AbsListView$PerformClick.run(AbsListView.java:1991)
03-17 14:39:42.199: E/AndroidRuntime(20411):    at android.os.Handler.handleCallback(Handler.java:587)
03-17 14:39:42.199: E/AndroidRuntime(20411):    at android.os.Handler.dispatchMessage(Handler.java:92)
03-17 14:39:42.199: E/AndroidRuntime(20411):    at android.os.Looper.loop(Looper.java:130)
03-17 14:39:42.199: E/AndroidRuntime(20411):    at android.app.ActivityThread.main(ActivityThread.java:3687)
03-17 14:39:42.199: E/AndroidRuntime(20411):    at java.lang.reflect.Method.invokeNative(Native Method)
03-17 14:39:42.199: E/AndroidRuntime(20411):    at java.lang.reflect.Method.invoke(Method.java:507)
03-17 14:39:42.199: E/AndroidRuntime(20411):    at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:878)
03-17 14:39:42.199: E/AndroidRuntime(20411):    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:636)
03-17 14:39:42.199: E/AndroidRuntime(20411):    at dalvik.system.NativeStart.main(Native Method)

リストビュー行のXMLは次のとおりです::::

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:orientation="horizontal"
    android:paddingBottom="5dp"
    android:paddingLeft="5dp"
    android:paddingRight="5dp"
    android:paddingTop="5dp" >

    <TextView
        android:id="@+id/txtView_History_Count"
        android:layout_width="0dip"
        android:layout_height="50dp"
        android:layout_weight="0.20"
        android:text="Number"
        android:textColor="#FFFFFF"
        android:textSize="22dp"
        android:paddingLeft="5dp"
        android:gravity="center" />

    <LinearLayout
        android:id="@+id/ll2"
        android:layout_width="0dip"
        android:layout_height="50dp"
        android:layout_weight="0.80"
        android:orientation="vertical"
        android:paddingLeft="5dp" >

        <TextView
            android:id="@+id/txtView_History_Result"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:text="Result"
            android:textColor="#316DA2"
            android:textSize="22dp" />

        <TextView
            android:id="@+id/txtView_History_Expression"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:text="Expression"
            android:textColor="#FFFFFF"
            android:textSize="15dp" />
    </LinearLayout>

</LinearLayout>

私はそれを正しい方法でやっているとは思いません。誰かがこれを行う方法を教えてもらえますか...

4

1 に答える 1

1
ma = new MainActivity();
TextView ma_prev = (TextView) ma.findViewById(R.id.txtViewPrevious);
EditText ma_Res = (EditText) ma.findViewById(R.id.edtxtInput);

Android ではこの方法は機能しません。の を作成し、Intent渡しMainActivityたいデータを extras の中に入れて、Bundleを呼び出しstartActivity()て を作成する必要がありMainActivityます。Bundle次に、内部の着信からデータを取得し、MainActivity's onCreate()それをビューに入力する必要があります。

于 2013-03-17T09:28:15.350 に答える