2017-03-09 7 views
0

私はアンドロイドスタジオの初心者です。私はアクティブからdialog.Iにデータを渡すことができないこの時点で立ち往生していますバンドルを試みたが、それはNULLポイントexception.Or私は私のメソッドが間違っていると思う原因を表示する原因ではありません。手助け。アクティビティから、ダイアログフラグメントを拡張するカスタムダイアログにデータを送る方法

ダイアログクラス

public class Mdlog extends DialogFragment 
{ 
LayoutInflater inflater; 
TextView sc1,sc2; 
@Override 
public Dialog onCreateDialog(Bundle savedInstanceState) { 
    AlertDialog.Builder builder=new AlertDialog.Builder(getActivity()); 
    inflater=getActivity().getLayoutInflater(); 
    View view=inflater.inflate(R.layout.layout_dialog,null); 
    Intent i=getActivity().getIntent(); 
    sc1= (TextView) view.findViewById(R.id.score1); 
    sc2= (TextView) view.findViewById(R.id.score2); 
    sc1.setText(i.getStringExtra("sc1")); 
    sc2.setText(i.getStringExtra("sc2")); 
    builder.setView(view); 
    AlertDialog dialog=builder.create(); 

    return dialog; 
}} 

MainActivityクラス

public class MainActivity extends AppCompatActivity { 

int sc1=0; 
int sc2=0; 

TextView t; 

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_main); 
    t= (TextView) findViewById(R.id.timeleft); 
    new CountDownTimer(3000,1000) 
    { 

     @Override 
     public void onTick(long millisUntilFinished) 
     { 
      t.setText(""+millisUntilFinished/1000); 
      sc1+=1; 
      sc2+=2; 
     } 

     @Override 
     public void onFinish() 
     { 

     } 
    }.start(); 
    Intent i=new Intent(this,Mdlog.class); 
    i.putExtra("sc1",sc1); 
    i.putExtra("sc2",sc2); 
    startActivity(i); 
    Mdlog dialog=new Mdlog(); 
    dialog.show(getFragmentManager(),"sss"); 

}} 
+0

あなたのログを共有することはできますか? –

答えて

1

は全体の削除、

Intent i=new Intent(this,Mdlog.class); 
    i.putExtra("sc1",sc1); 
    i.putExtra("sc2",sc2); 
    startActivity(i); 

argumentsためbundleは、あなたのフラグメントに設定されたデータを渡すために設定し、

Bundle args = new Bundle(); 
    args.putInt("sc1", sc1); 
    args.putInt("sc2", sc2); 
    Mdlog dialog=new Mdlog(); 
    dialog.setArguments(args); 
    dialog.show(getFragmentManager(),"dialog"); 

そして

Bundle args = getArguments(); 
int sc1 = args.getInt("sc1"); 
int sc2 = args.getInt("sc2"); 
+0

android.content.res.Resources $ NotFoundException:文字列リソースID#0x2 。このエラーは表示されました –

+0

どの行ですか? @ SAYAM.SSANGHVI – AtaerCaner

+0

sc1.setText(sc3); この行@AtaerCaner –

0

、とあなたのダイアログで件のデータを取得するあなたは、静的メソッドを使用してフラグメントを作成する必要があります。 DialogFragmentにnewIsntanceと入力すると、Android StudioはnewInstance静的メソッドを生成します。そのメソッドにデータを渡すことができます。たとえば:

public static DialogFragment newInstance(int value1, int value2) { 
    DownloadDialogFragment dialogFragment = new DownloadDialogFragment(); 

    Bundle args = new Bundle(); 
    args.putInt("args_value1", value1); 
    args.putInt("args_value2", value2); 

    dialogFragment.setArguments(args); 
    return dialogFragment; 
} 

あなたはこのようなonCreateDialog(Bundle savedInstanceState)でデータを取得することができます。

public Dialog onCreateDialog(Bundle savedInstanceState) { 

    int value1 = getArguments().getInt("args_value1"); 
    int value2 = getArguments().getInt("args_value2"); 
} 
関連する問題