【问题标题】:Error opening trace file. No such file or directory [2]打开跟踪文件时出错。没有这样的文件或目录 [2]
【发布时间】:2013-12-18 22:04:38
【问题描述】:

我对 java 和 android 真的很陌生,而且我主要是自学成才。我需要帮助解决这个问题。这可能是一些非常愚蠢、明显或愚蠢的事情,但是嘿,我必须从某个地方开始,对吗? 我的应用程序在启动时崩溃。 尝试运行我的应用程序后,我在 logcat 中收到此消息。

这是我的代码,这是一个练习,我应该在其中制作一个小应用程序,在其中显示一些国家,然后输入他们的首都。我使用 3 个按钮、2 个文本视图和 1 个编辑文本。

MainActivity.java

    public class MainActivity extends Activity {
public int cuenta = 0;
public TextView questionlabel = (TextView) findViewById(R.id.textView1);
public TextView resultadolabel = (TextView) findViewById(R.id.textView2);
public Button startbutton = (Button) findViewById(R.id.button1);
public Button checkbutton = (Button) findViewById(R.id.button2);
public Button nextbutton = (Button) findViewById(R.id.button3);
public EditText inputbox = (EditText) findViewById(R.id.editText1);

public String[] mPaises = {
        "Canada",
        "Estados Unidos",
        "Mexico",
        "Guatemala",
        "Belice"};

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

    startbutton.setOnClickListener(new View.OnClickListener() {

        @Override
        public void onClick(View arg0) {

            //start button
    questionlabel.setText(mPaises[cuenta]);
        }});

    checkbutton.setOnClickListener(new View.OnClickListener() {


        @Override
        public void onClick(View v) {
            // check button
            if (cuenta == 0) {
                if (inputbox.toString() == "Ottawa") {
                    resultadolabel.setText("Correcto");}
                else {resultadolabel.setText("Respuesta correcta: Ottawa");}}
            else if (cuenta == 1) {
                if (inputbox.toString() == "Washington") {
                    resultadolabel.setText("Correcto");}
                else {resultadolabel.setText("Respuesta correcta: Washington");}}
            else if (cuenta == 2) {
                if (inputbox.toString() == "Mexico") {
                    resultadolabel.setText("Correcto");}
                else {resultadolabel.setText("Respuesta correcta: Mexico");}}
            else if (cuenta == 3) {
                if (inputbox.toString() == "Guatemala") {
                    resultadolabel.setText("Correcto");}
                else {resultadolabel.setText("Respuesta correcta: Guatemala");}}
            else if (cuenta == 4) {
                if (inputbox.toString() == "Belmopan") {
                    resultadolabel.setText("Correcto");}
                else {resultadolabel.setText("Respuesta correcta: Belmoopan");}}
        }
    });

    nextbutton.setOnClickListener(new View.OnClickListener() {

        @Override
        public void onClick(View v) {
            // LO QUE HACE EL NEXT BUTTON
            cuenta = cuenta + 1;
            questionlabel.setText(mPaises[cuenta]);


        }
    });

}

@Override
public boolean onCreateOptionsMenu(Menu menu) {
    getMenuInflater().inflate(R.menu.activity_main, menu);
    return true;
}

}

这是我的 Activity_Main

    <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent" >

<EditText
    android:id="@+id/editText1"
    android:inputType="text"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_alignParentBottom="true"
    android:layout_centerHorizontal="true"
    android:layout_marginBottom="129dp"
    android:ems="10" />

<Button
    android:id="@+id/button1"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_above="@+id/editText1"
    android:layout_alignLeft="@+id/editText1"
    android:layout_marginBottom="42dp"
    android:layout_marginLeft="16dp"
    android:text="@string/Start" />

<TextView
    android:id="@+id/textView1"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_above="@+id/button1"
    android:layout_centerHorizontal="true"
    android:layout_marginBottom="63dp"
    android:text="@string/pais" />

<Button
    android:id="@+id/button2"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_alignBaseline="@+id/button1"
    android:layout_alignBottom="@+id/button1"
    android:layout_toRightOf="@+id/button1"
    android:text="@string/check" />

<Button
    android:id="@+id/button3"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_alignBottom="@+id/button2"
    android:layout_toRightOf="@+id/button2"
    android:text="@string/next" />

<TextView
    android:id="@+id/textView2"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_above="@+id/button1"
    android:layout_alignLeft="@+id/textView1"
    android:layout_marginBottom="21dp"
    android:text="@string/mensaje" />

还有我的清单

    <manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.example.capitales.del.mundo"
android:versionCode="1"
android:versionName="1.0" >

<uses-sdk
    android:minSdkVersion="8"
    android:targetSdkVersion="15" />

<application
    android:icon="@drawable/ic_launcher"
    android:label="@string/app_name"
    android:theme="@android:style/Theme.Black.NoTitleBar.Fullscreen" >
    <activity
        android:name=".MainActivity"
        android:label="@string/title_activity_main" >
        <intent-filter>
            <action android:name="android.intent.action.MAIN" />

            <category android:name="android.intent.category.LAUNCHER" />
        </intent-filter>
    </activity>
</application>

【问题讨论】:

    标签: java android eclipse


    【解决方案1】:

    您需要首先扩充您的布局,然后检索您的 UI 元素,否则 findViewById 会返回 null,因此您的应用程序会在此行由 NullPointerException 引起:

    startbutton.setOnClickListener
    


    因此,使用setContentView(R.layout.activity_main); 扩展您的布局,然后获取您的 UI 元素。
    public TextView questionlabel;
    public TextView resultadolabel;
    public Button startbutton;
    public Button checkbutton;
    public Button nextbutton;
    public EditText inputbox;    
    
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
    
        questionlabel = (TextView) findViewById(R.id.textView1);
        resultadolabel = (TextView) findViewById(R.id.textView2);
        startbutton = (Button) findViewById(R.id.button1);
        checkbutton = (Button) findViewById(R.id.button2);
        nextbutton = (Button) findViewById(R.id.button3);
        inputbox = (EditText) findViewById(R.id.editText1);
        /****/
    }
    

    注意事项:

    • if (inputbox.toString() == "Ottawa") 不要使用 == 比较 Strings 的内容。请改用equals()
    • How do I compare Strings in Java ?
    • 下次,在问题中包含您的 logcat

    【讨论】:

      【解决方案2】:

      在这两行之后写下所有代码,

      super.onCreate(savedInstanceState);
          setContentView(R.layout.activity_main);
      

      因为您如何在创建之前检索 id 或元素。

      但是你可以在它之前声明它。但是必须在活动创建之后才能获取 id。

      【讨论】:

        猜你喜欢
        • 2012-07-11
        • 2013-07-22
        • 1970-01-01
        • 2013-02-07
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多