2016-06-15 6 views
1

私はそれをタイトルとして、startActivityが認識されないエラーが発生しました。コードは次のとおりです。メソッド 'startActivity(android.content.Intent)'を解決できません。

AlertDialog.Builder builder = new AlertDialog.Builder(mContext); 
builder.setTitle("Deal"); 
builder.setMessage("Hello"); 
builder.setPositiveButton("Call ME", new DialogInterface.OnClickListener() { 
    @Override 
    public void onClick(DialogInterface dialog, int which) { 

     Intent callIntent = new Intent(Intent.ACTION_CALL); 
     callIntent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK); 
     callIntent.setData(Uri.parse("tel:" + "528543871")); 
     startActivity(callIntent); 

    } 
}); 
builder.create(); 
builder.show(); 
+1

'startActivity()は' 'Context'など' Activity'としてのそのサブクラスのメソッドです。このコードを持つクラスは、「コンテキスト」ではありません。 'Fragment'の場合は' getActivity()。startActivity() 'を使います。 – CommonsWare

+1

@CommonsWare 'startActivity'は' Fragment'クラスのメソッドです –

+0

ログウィンドウに表示されるエラーを投稿してください – Asama

答えて

0

ダイアログを作成していません。あなたはビルダーを作っています。 次のように試してみてください。

AlertDialog myDialog = new AlertDialog.Builder(this).create(); 
myDialog.setTitle("Deal"); 
myDialog.setMessage("Hello"); 
myDialog.setButton(DialogInterface.BUTTON_POSITIVE, "Call me", new DialogInterface.OnClickListener() { 
    @Override 
    public void onClick(DialogInterface dialog, int which) { 

     Intent callIntent = new Intent(Intent.ACTION_CALL); 
     callIntent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK); 
     callIntent.setData(Uri.parse("tel:" + "528543871")); 
     startActivity(callIntent); 

    } 
}) 
myDialog.show(); 
0

コメントに他の人がすでに指摘したように、必要startActivity方法が明示的コンテキストcontext.startActivity()からまたはアクティビティがContextインタフェースを実装しているので、あなたが活動startActivity()にしている場合はどちらかと呼ばれていました。あなたのケースでは、私は(あなたが既に持っているmContextを使用)、これはそれを修正すべきだと思う:

AlertDialog.Builder builder = new AlertDialog.Builder(mContext); 
builder.setTitle("Deal"); 
builder.setMessage("Hello"); 
builder.setPositiveButton("Call ME", new DialogInterface.OnClickListener() { 
@Override 
public void onClick(DialogInterface dialog, int which) { 

    Intent callIntent = new Intent(Intent.ACTION_CALL); 
    callIntent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK); 
    callIntent.setData(Uri.parse("tel:" + "528543871")); 
    mContext.startActivity(callIntent); 

} 
}); 

builder.create(); 
builder.show(); 
+0

私はこれも試しました:mContext.startActivity(callIntent)それは動作しません。 – stack

+0

'getApplicationContext()。startActivity(callIntent)'を試しましたか? – Vucko

+0

このコードは正確にどこにありますか?これはどんなクラスですか? – Vucko

0

コンテキストで呼び出されstartActivity()方法。方法をOnCLickListenerのメソッドであるonClick()に呼び出すので、メソッドは未解決です。あなたのコードではのコンストラクタにmContextを渡したので、そのコンテキスト変数を使ってstartActivity()メソッドを呼び出すこともできます。

AlertDialog.Builder builder = new AlertDialog.Builder(mContext); 
builder.setTitle("Deal"); 
builder.setMessage("Hello"); 
builder.setPositiveButton("Call ME", new DialogInterface.OnClickListener() { 
    @Override 
    public void onClick(DialogInterface dialog, int which) { 

     Intent callIntent = new Intent(Intent.ACTION_CALL); 
     callIntent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK); 
     callIntent.setData(Uri.parse("tel:" + "528543871")); 
     mContext.startActivity(callIntent); //Correct this line 

    } 
}); 
builder.create(); 
builder.show(); 

OR

AlertDialog.Builder builder = new AlertDialog.Builder(mContext); 
builder.setTitle("Deal"); 
builder.setMessage("Hello"); 
builder.setPositiveButton("Call ME", new DialogInterface.OnClickListener() { 
    @Override 
    public void onClick(DialogInterface dialog, int which) { 

     Intent callIntent = new Intent(Intent.ACTION_CALL); 
     callIntent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK); 
     callIntent.setData(Uri.parse("tel:" + "528543871")); 
     getActivity().startActivity(callIntent); 

    } 
}); 
builder.create(); 
builder.show(); 
+0

メソッドgetActivity()も認識されません。 – stack

+0

'getApplicationContext()'を使ってみてください。 – Prasheel

関連する問題