0

我在 Eclipse 中使用 API 15 中的目标 sdk 创建了应用程序,并且。我想让按钮开始新的活动。我已经创建了该代码,但我有一个问题。当我在我的手机上运行 Ninetology Stealh 2 时,当我点击一个按钮并且我的应用程序崩溃并且我的手机向我显示:

“不幸开始”

我已经在其他电话二上测试过它,它显示同样的问题。我还使用了从 thenewboston、vongella 和其他人那里学到的更多技术,但仍然有同样的问题。这是我的 .xml 和 java 代码:-

  1. 菜单.java
package com.mytuturkiu.mytuturkiu;

import android.app.Activity;
import android.os.Bundle;
import android.view.View;                                                                                                                                                                                                                       
import android.widget.Button;
import android.content.Intent;

    public class Menu extends Activity {

      Button btnmodul;

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

          btnmodul = (Button)findViewById(R.id.btnmodul);      
            btnmodul.setOnClickListener(new View.OnClickListener() {

              @Override
              public void onClick(View v) {
          // TODO Auto-generated method stub
              Intent vokal = new Intent(v.getContext(),Modul_Vokal.class);
              startActivity(vokal);
          }
      } );

  }



}
  1. Modul_vokal.java

包 com.mytuturkiu.mytuturkiu;

import android.os.Bundle;
import android.app.Activity;
import android.view.Menu;

public class Modul_Vokal extends Activity {

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

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

}
  1. AndroidManifest.xml

    <uses-sdk
        android:minSdkVersion="14"
        android:targetSdkVersion="15" />
    
    <application
        android:allowBackup="true"
        android:icon="@drawable/ic_launcher"
        android:label="@string/app_name"
        android:theme="@style/AppTheme" >
        <activity
            android:name="com.mytuturkiu.mytuturkiu.Menu"
            android:label="@string/app_name" >
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />
    
                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
        <activity
            android:name="com.mytuturkiu.mytuturkiu.Modul_Vokal"
            android:label="@string/title_activity_modul__vokal" >
        </activity>
    
    </application>
    

我的应用程序有什么问题?...

4

3 回答 3

1

你不应该这样做v.getContext()......你应该使用getApplicationContext()..

视图v是您单击的视图。所以v.getContext()返回视图运行的上下文。这就是问题所在。

我认为使用应用程序的上下文更好,并且不会引起问题。

于 2013-06-28T12:34:48.137 回答
0

You can add a function like this in your class:

  public class Menu extends Activity {

  Button btnmodul;

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

      btnmodul = (Button)findViewById(R.id.btnmodul);      
      btnmodul.setOnClickListener(new View.OnClickListener() {

          @Override
          public void onClick(View v) {
            // CALL THE FUNCTION
            startMyActivity();
          }
      } );

  }

  private void startMyActivity(){
         Intent vokal = new Intent(this,Modul_Vokal.class);
         startActivity(vokal);
  }

}

The function is in your activity context and when you put "this" in the Intent constructor, it will take the correct one.

于 2013-06-28T13:12:07.637 回答
0

尝试,

 Intent vokal = new Intent(getApplicationContext(),Modul_Vokal.class);
              startActivity(vokal);

代替,

   Intent vokal = new Intent(v.getContext(),Modul_Vokal.class);
              startActivity(vokal);

它肯定会工作我的朋友。

于 2013-06-28T13:16:59.597 回答