2011-02-08 9 views
1

ここでは、私の親アクティビティを介してcustomdialogを呼び出します。ダイアログには別のアクティビティのリストビューが含まれています...そのダイアログから...リストビューから選択したコンテンツを転送します。私の目標を達成する..と多くの方法を試してみました..誰も私はそれを達成するために私を助けることができます。 注:私はlistitemclickリスナー上でエラーが発生しました...データをcustomdialogクラスから親クラスに転送

customdialog.class

public class CustomizeDialog extends Dialog { 
org.me.dailogfrmchildact.MainActivity ma; 
    Button cancelButton; 
    ListView list; 
    int item_pos; 

    public CustomizeDialog(Context context) { 
     super(context); 
     Context cs = context; 

     /** 'Window.FEATURE_NO_TITLE' - Used to hide the title */ 
     requestWindowFeature(Window.FEATURE_NO_TITLE); 
     setContentView(R.layout.dialog); 
     ma=new MainActivity(); 
     list = (ListView) findViewById(R.id.list); 
     cancelButton = (Button) findViewById(R.id.OkButton); 
     ListviewContent.add("item1"); 
     ListviewCount.add("20"); 
     ListviewContent.add("item2"); 
     ListviewCount.add("30"); 
     list.setAdapter(new ListViewAdapter(cs)); 

     list.setOnItemClickListener(new AdapterView.OnItemClickListener() {  
      public void onItemClick(AdapterView<?> arg0, View arg1, int pos, long arg3) { 
       item_pos = pos; 
       System.out.println("===========item_pos" + pos); 
       ma.txt.setText(ListviewContent.get(pos).toString());  
       dismiss();      
      } 
     }); 

     cancelButton.setOnClickListener(new View.OnClickListener() { 

      public void onClick(View arg0) { 
       dismiss(); 
      } 
     }); 
    }  

    private static ArrayList<String> ListviewContent = new ArrayList<String>(); 
    private static ArrayList<String> ListviewCount = new ArrayList<String>(); 

    private static class ListViewAdapter extends BaseAdapter { 
     private LayoutInflater mInflater; 

     public ListViewAdapter(Context context) { 
      mInflater = LayoutInflater.from(context); 
     } 

     public int getCount() { 
      return ListviewContent.size(); 
     } 

     public Object getItem(int position) { 
      return position; 
     } 

     public String getCount(int position) { 
      return ListviewCount.get(position); 
     } 

     public String[] getSizeType(int position) { 
      String[] str = new String[2]; 
      str[0] = ListviewContent.get(position); 
      str[1] = ListviewCount.get(position); 
      return str; 
     } 

     public long getItemId(int position) { 
      return position; 
     } 

     public View getView(int position, View convertView, ViewGroup parent) { 

      ListContent holder;  
      if (convertView == null) { 
       convertView = mInflater.inflate(R.layout.listviewinflate, null); 
       holder = new ListContent(); 
       holder.text = (TextView) convertView.findViewById(R.id.TextView01); 
       holder.text.setCompoundDrawables(null, null, null, null); 
       holder.count = (TextView) convertView.findViewById(R.id.TextView02); 
       holder.count.setCompoundDrawables(null, null, null, null); 
       convertView.setTag(holder); 
      } else {  
       holder = (ListContent) convertView.getTag(); 
      }  
      holder.text.setText(ListviewContent.get(position)); 
      holder.count.setText(ListviewCount.get(position)); 
      return convertView; 
     }  
     static class ListContent { 
      TextView text; 
      TextView count; 
     } 
    } 
} 

mainactivity.class:

public class MainActivity extends Activity { 
    org.me.dailogfrmchildact.CustomizeDialog cd; 
    Button btn; 
    EditText txt; 
    CustomizeDialog customizeDialog; 
    boolean click = false;  

    @Override 
    public void onCreate(Bundle icicle) { 
     super.onCreate(icicle); 
     setContentView(R.layout.main); 
     cd = new CustomizeDialog(this); 
     btn = (Button) findViewById(R.id.btn1); 
     txt = (EditText) findViewById(R.id.txt1); 
     /** Display Custom Dialog */ 
     btn.setOnClickListener(new OnClickListener() { 

      public void onClick(View arg0) { 
       customizeDialog = new CustomizeDialog(MainActivity.this); 
       customizeDialog.show(); 
      } 
     }); 
    } 
} 
+0

あなたのエラーは何ですか? –

+0

Edittextを設定している間..強制終了しました.. – jerith

答えて

1

問題はあなたに新しいMainActivityを作成しているあります最初の場所でCustomizeDialogを作成したものを使用する必要がある場合は、CustomizeDialogを使用します。

Contextの代わりにMainActivityを取り込み、maをそれと等しく設定しましたか?

編集:へ 変更CustomizeDialogのコンストラクタ:

public CustomizeDialog(MainActivity mainActivity) { 
    super(mainActivity); 
    ma = mainActivity; // Instead of ma = new MainActivity() 

    // everything else is the same 
} 
+0

はっきりとgngr44を教えてくれますか? – jerith

+0

私は自分の答えを編集しました。 – gngr44

関連する問題