2017-02-24 15 views
0

私はアンドロイドを新しくしています。私はDialogを作成しました。このDialogには2 EditTextのフィールドがあります。Dialogからデータを取得し、MainActivityに投稿してください

私はこの2つのEditTextフィールドから(ユーザーが入力された)値を取得し、MainActivityで2つの個別のTextViewフィールドに見せたいしかし、私はしようとどんなに、私はEditTextフィールドから値を取得することはできません。

助けてください。私が今まで持っていたコード...

package edu.arnab.simpledialogmenu; 

import android.app.AlertDialog; 
import android.content.DialogInterface; 
import android.content.DialogInterface.OnClickListener; 
import android.graphics.Color; 
import android.os.Bundle; 
import android.support.v7.app.ActionBarActivity; 
import android.view.Menu; 
import android.view.MenuItem; 
import android.view.View; 
import android.widget.EditText; 
import android.widget.RelativeLayout; 
import android.widget.TextView; 
import android.widget.Toast; 


public class MainActivity extends ActionBarActivity implements OnClickListener { 

    RelativeLayout layout; 
    TextView tvTitle, tvCaption, tvStudio; 
    EditText gTitle, gCaption; 
    String title, caption; 

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

     layout = (RelativeLayout) findViewById(R.id.relative1); 

     tvTitle = (TextView) findViewById(R.id.textView1); 
     tvCaption = (TextView) findViewById(R.id.textView2); 
     tvStudio = (TextView) findViewById(R.id.textView3); 

     registerForContextMenu(layout); 
     registerForContextMenu(tvTitle); 

    } 

    @Override 

    public void onCreateContextMenu(android.view.ContextMenu menu, android.view.View v, android.view.ContextMenu.ContextMenuInfo menuInfo) 
    { 
     if(v == layout) 
     { 
      menu.add(1, 1, 0, "Make Background Yellow"); 
      menu.add(1, 2, 0, "Make Background Cyan"); 
     } 
     else if(v == tvTitle) 
     { 

      menu.removeGroup(1); 
      menu.add(2, 3, 0, "Make Title COD"); 
      menu.add(2, 4, 0, "Make Title NFS"); 
     } 

     super.onCreateContextMenu(menu, v, menuInfo); 
    }; 

    @Override 
    public boolean onContextItemSelected(MenuItem item) { 
     // TODO Auto-generated method stub 

     switch(item.getItemId()) 
     { 
      case 1: 
       layout.setBackgroundColor(Color.YELLOW); 
       break; 
      case 2: 
       layout.setBackgroundColor(Color.CYAN); 
       break; 
      case 3: 
       tvTitle.setText("Title: Call of Duty"); 
       break; 
      case 4: 
       tvTitle.setText("Title: Need for Speed"); 
       break; 
     } 
     return super.onContextItemSelected(item); 
    } 

    public boolean onCreateOptionsMenu(Menu menu) { 

     menu.add(1, 1, 1, "Game Entry Dialog"); 
     menu.add(1, 2, 1, "Change Background"); 
     menu.add(1, 3, 1, "Exit App"); 
     return true; 
    } 

    @Override 
    public boolean onOptionsItemSelected(MenuItem item) { 
     String text = null; 
     switch(item.getItemId()) 
     { 
      case 1: 
       text = item.getTitle().toString(); 
       // Show Game Dialog 
       AlertDialog.Builder ab = new AlertDialog.Builder(this); 
       ab.setTitle("New Game Entry Dialog"); 

       View view = getLayoutInflater().inflate(R.layout.dlg_layout, null); 
       ab.setView(view); 

       gTitle = (EditText) view.findViewById(R.id.editTitle); 
       gCaption = (EditText) view.findViewById(R.id.editCaption); 
       title = gTitle.getText().toString(); 
       caption = gCaption.getText().toString(); 



       ab.setPositiveButton("OKAY IT", this); 
       ab.setNegativeButton("CANCEL IT", this); 

       AlertDialog ad = ab.create(); 
       ad.show(); 

       break; 
      case 2: 
       text = item.getTitle().toString(); 

       layout.setBackgroundColor(Color.GREEN); 
       tvTitle.setBackgroundColor(Color.WHITE); 
       tvCaption.setBackgroundColor(Color.LTGRAY); 
       break; 
      case 3: 
       text = item.getTitle().toString(); 

       finish(); 
       break; 
     } 

     Toast.makeText(this, "You have selected menu item " + text, 3000).show(); 
     return super.onOptionsItemSelected(item); 
    } 

    @Override 
    public void onClick(DialogInterface arg0, int arg1) { 
     // TODO Auto-generated method stub 

     switch(arg1) 
     { 
      case DialogInterface.BUTTON_POSITIVE: 
       //take text from dialog fields and show all info on MainActivity 
       tvTitle.setText(title); 
       tvCaption.setText(caption); 
       break; 
      case DialogInterface.BUTTON_NEGATIVE: 
       Toast.makeText(this, "You cancelled dialog entry", 300).show(); 
       break; 
     } 

    } 
} 
+0

単にあなたもインターフェイスとイベントバスを使用することができます – Piyush

+0

「私はのEditTextフィールドから値を取得することはできません。」どうして?あなたを止めているのは何ですか? – Kuffs

+0

このコードを書く 'title = gTitle.getText()。toString(); caption = gCaption.getText()。toString(); 'BUTTON_POSITIVE'の' onClick'メソッド –

答えて

2

ReplcaeこれであなたonClick方法。

@Override 
    public void onClick(DialogInterface arg0, int arg1) { 
     // TODO Auto-generated method stub 

     switch(arg1) 
     { 
      case DialogInterface.BUTTON_POSITIVE: 
       //take text from dialog fields and show all info on MainActivity 
       //these are changes 
       title = gTitle.getText().toString(); 
       caption = gCaption.getText().toString(); 

       tvTitle.setText(title); 
       tvCaption.setText(caption); 
       break; 
      case DialogInterface.BUTTON_NEGATIVE: 
       Toast.makeText(this, "You cancelled dialog entry", 300).show(); 
       break; 
     } 

    } 
+0

ご協力ありがとうございます。問題が解決しました。 – Arnab

+0

あなたがこの回答が役に立ったら、あなたはそれをアップヴォートできるので、他の人が助けを得ることができるならば。 –

+0

私はあなたの答えをupvotedしましたが、私はこの通知を次のように示しました:**フィードバックありがとう!投票率が15未満の人の投票が記録されますが、公表されたポストスコアは変更されません。**申し訳ありません。 – Arnab

関連する問題