2

ここでの他のすべての質問は、ACTION_CALLまたはACTION_DIALまたはそれらのトピックに関するものです。わかりました。意図が必要です。しかし、カスタムダイヤラをどのように実装しますか?検索して検索しましたが、このトピックに関して何も見つかりません。私はそれをすべて設計し、準備ができていますが、すべてをまとめる方法については何もありません。

いくつかの要素とスタイルをlayout/activity_main.javaに追加するのと同じくらい簡単だと思いましたが、そうではありません。これまでの簡単なテストでは、ロード時にアプリがクラッシュしました。好き:

<TextView
    android:id="@+id/textView1"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:gravity="center"
    android:text="@string/title_two"
    android:textAppearance="?android:attr/textAppearanceLarge" />

<EditText
    android:id="@+id/editText1"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:ems="10"
    android:inputType="phone"
    android:maxLength="11" >
    <requestFocus />
</EditText>

<Button
    android:id="@+id/one"
    android:text="1" />
<Button
    android:id="@+id/two"
    android:text="2" />
<Button
    android:id="@+id/three"
    android:text="3" />
<Button
    android:id="@+id/four"
    android:text="4" />
<Button
    android:id="@+id/five"
    android:text="5" />
<Button
    android:id="@+id/six"
    android:text="6" />
<Button
    android:id="@+id/seven"
    android:text="7" />
<Button
    android:id="@+id/eight"
    android:text="8" />
<Button
    android:id="@+id/nine"
    android:text="9" />
<Button
    android:id="@+id/star"
    android:text="*" />
<Button
    android:id="@+id/zero"
    android:text="0" />
<Button
    android:id="@+id/pound"
    android:text="#" />
<Button
    android:id="@+id/callButton"
    android:text="Call" />
<Button
    android:id="@+id/contacts"
    android:text="Con" />
<Button
    android:id="@+id/del"
    android:text="Del" />

それは私が遭遇しているある種の簡単な問題だと確信していますが、すべてをクラッシュさせずにボタンを追加することさえできません。次に、src / MainActivity.javaで:

public class MainActivity extends Activity {
    Button dialBtn;
    EditText numTxt;

@Override
public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        dialBtn = (Button) findViewById(R.id.button1);
        numTxt = (EditText) findViewById(R.id.editText1);
        dialBtn.setOnClickListener(new View.OnClickListener() {
            public void onClick(View v) {
                try {
                    if (numTxt != null && (numTxt.getText().length()==10 ||numTxt.getText().length()==11)) {
                        startActivity(new Intent(Intent.ACTION_CALL, Uri.parse("tel: 8880000000" + numTxt.getText())));
                    }else if(numTxt != null && numTxt.getText().length()==0){
                        Toast.makeText(getApplicationContext(), "You must enter a number to call", Toast.LENGTH_SHORT).show();
                    }else if(numTxt != null && numTxt.getText().length()<10){
                        Toast.makeText(getApplicationContext(), "Please check your number and try again", Toast.LENGTH_SHORT).show();
                    }
                } catch (Exception e) {
                    Log.e("DialerActivity", "error: " + e.getMessage(), e);
                }
            }
        });
    }
}

ここでの唯一の目標は、ダイヤラをユーザーに提示することです。番号を入力すると、通常のダイヤラのように画面に表示され、サービスのハードコードされたアクセス番号が呼び出され、eventListenerが応答に変更されたときにダイヤルされた番号が渡されます。

私はこれに慣れていないことを認めますので、いくつかの明白な間違いがあります、私は知っています、私はそれらを見るにはあまりにも新しいです。そこには100万人の顧客ダイヤラーがいるので、これはAndroidでできる最も簡単なことの1つだと思いました。私は特別なことをしようとはしていません。サービスを使用するにはアプリを使用する必要があります。つまり、BroadcastReceiverが発信通話を傍受して、サービスを使用するかどうかを確認しようとして、バックグラウンドでぶらぶらしていません。シンプルなダイヤラアプリ。どこが間違っているのですか?このコードの一部は、本やオンラインチュートリアルから直接コピーされ、機能させようとしていますが、直接コピーして貼り付けると機能しませんか?

4

1 に答える 1

1

それがレイアウトの実際のコンテンツである場合、いくつかの問題があります。

  1. .xmlファイルである必要があります。
  2. ルート要素が必要です(つまり、ボタンを特定の種類のレイアウト(線形、相対など)でレイアウトする必要があります)開始する場所は次のとおりです:http://developer.android.com/guide/topics/ui/declaring- layout.html
  3. レイアウトxmlのすべての要素には、android:layout_widthとandroid:layout_heightの2つの属性が必要です。
  4. 各ボタンにView.OnClickListenerをアタッチする必要があります。
  5. ボタンを特定の方法で配置する必要があります。たとえば、3つの線形レイアウトを使用して、メインレイアウトに含まれる3行の数字ボタンをホストします。

まだ始めたばかりのようですので、簡単なAndroidアプリを作成するための基本的な例をオンラインで確認することをお勧めします。

于 2012-08-22T19:30:32.187 に答える