【问题标题】:Activity is not starting活动未开始
【发布时间】:2013-02-15 08:38:15
【问题描述】:

请看下面的代码

Form.java

我的主要活动是 Form.java。在里面,我有一个AlertDialog。当用户点击“是”按钮时,会调用下面的类

private class PositiveDialogBtnAction implements DialogInterface.OnClickListener
    {

        public PositiveDialogBtnAction()
        {
        }  
        @Override
        public void onClick(DialogInterface arg0, int arg1) {
            // TODO Auto-generated method stub
            //Toast.makeText(getApplicationContext(), databaseConnector.getStreetAddress(selectedBranch), Toast.LENGTH_LONG).show();

            Dialog dialog = new Dialog(context);
            dialog.setContentView(R.layout.activity_call_dialog);
            dialog.setTitle("Select a Phone Number");

            dialog.show();
        }

    }

以下是 XML 文件和 Java 类,该类被设置为上述 PositiveDialogBtnAction 类中的 Dialog

activity_call_dialog

<TextView
    android:id="@+id/callNumber1"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_centerHorizontal="true"
    android:layout_centerVertical="true"
    android:text="" />

<TextView
    android:id="@+id/callNumber2"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_centerHorizontal="true"
    android:layout_centerVertical="true"
    android:text="" />

CallDialog.java

import android.os.Bundle;
import android.app.Activity;
import android.view.Menu;
import android.widget.TextView;
import android.widget.Toast;

public class CallDialog extends Activity {

    private DatabaseConnector database = DatabaseHandler.getInstance();
    private TextView ph1,ph2;

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

        Toast.makeText(this, "Activity Running", Toast.LENGTH_LONG).show();
        //String selectedBranch = Form.selectedBranch;

        //ph1 = (TextView)findViewById(R.id.callNumber1);
        //ph2 = (TextView)findViewById(R.id.callNumber2);

        //ph1.setText(database.getPhoneNumber1(selectedBranch));
        //ph2.setText(database.getPhoneNumber2(selectedBranch));

    }

    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        // Inflate the menu; this adds items to the action bar if it is present.
        getMenuInflater().inflate(R.menu.activity_call_dialog, menu);
        return true;
    }


}

但是,当PositiveDialogBtnAction 被解雇时,CallDialog.java 中提到的Toast 永远不会被解雇。似乎它没有处理 CallDIalog.java. 因此,我也无法将值设置为 activity_call_dialog.xml 中的文本字段。我已经注释掉了这些行。

为什么没有调用与此活动捆绑的这个 Java 文件?请帮忙!

【问题讨论】:

  • 你能清理一下你的代码吗?真的很吵,很难看到发生了什么。例如。你提到了 Call.java 但这并没有在任何地方显示。另外,删除不必要的注释行......也许创建一个 Gist 并在此处仅保留相关代码会是一个更好的解决方案。
  • @allprog:我提到了 CallDialog.java,那是一个错字。对不起。我改正了
  • CallDialog 应该是Activity 还是Dialog?如果你希望它是一个对话框,它不应该扩展Activity。此外,您永远不会实例化它。您只需创建一个新的Dialog,而不是一个新的CallDialog。如果它应该是 Activity,则需要以 Intent 开头,而不是创建对话框并显示它。
  • 你能给我看看你的Form.java类吗,你可以比这更容易处理正面和负面的点击,请编辑你的问题,你的类不清楚

标签: java android eclipse android-activity android-dialog


【解决方案1】:

要创建警报对话框,您应该使用 AlertDialog.Builder。它有一个漂亮流畅的界面,使处理对话框变得非常容易。示例:

new AlertDialog.Builder(this)
    .setMessage("Someone is calling you")
    .setPositiveButton("Positive", 
            new OnClickListener() {
                @Override
                public void onClick(DialogInterface dialog, int which) {
                    startActivity(new Intent("com.example.CallDialogActivity"));
            }})
    .create()
    .show();

为了从点击监听器内部开始一个新的活动,只需调用startActivity() 并使用在AndroidManifest.xml 中注册的动作为你的CallDialog(我建议你将它重命名为CallDialogActivity)。但无论如何,您应该确定在哪里使用对话框或活动。他们必须得到相应的处理。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-10-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-04-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多