2010-11-15 34 views
1

我在使用Android應用中的按鈕切換視圖時遇到問題。該代碼在Eclipse中沒有顯示任何錯誤,但是當單擊該按鈕時,應用程序意外退出仿真器。我的代碼如下。謝謝使用按鈕切換Android SDK的視圖

public class Main extends Activity { 
    /** Called when the activity is first created. */ 
    @Override 
    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.main); 

     Button go = (Button)findViewById(R.id.goButton); 
     go.setOnClickListener(mGoListener);  
    } 

    private OnClickListener mGoListener = new OnClickListener() { 
    public void onClick(View v) {   
      Intent intent = new Intent(Intent.ACTION_VIEW); 
      intent.setClassName("android.taboo.Activities", "android.taboo.Activities.MainMenu"); 
      startActivity(intent); 
     } 
    }; 
} 

public class MainMenu extends Activity{ 
    @Override 
    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.mainmenu); 

     TextView quickStart = (TextView)findViewById(R.id.quickStart); 
     quickStart.setOnClickListener(mQuickStartListener); 

     TextView gameSetup = (TextView)findViewById(R.id.gameSetup); 
     gameSetup.setOnClickListener(mGameSetupListener); 

     TextView settings = (TextView)findViewById(R.id.settings); 
     settings.setOnClickListener(mSettingsListener); 

     TextView wordEntry = (TextView)findViewById(R.id.wordEntry); 
     wordEntry.setOnClickListener(mWordEntryListener); 
    } 

    //Listeners for MainMenu navigation buttons 
    private OnClickListener mQuickStartListener = new OnClickListener() { 
     public void onClick(View v) { 
      setContentView(R.layout.quickstart); 
     } 
    }; 
    private OnClickListener mGameSetupListener = new OnClickListener() { 
     public void onClick(View v) { 
      setContentView(R.layout.gamesetup); 
     } 
    }; 
    private OnClickListener mSettingsListener = new OnClickListener() { 
     public void onClick(View v) { 
      setContentView(R.layout.settings); 
     } 
    }; 
    private OnClickListener mWordEntryListener = new OnClickListener() { 
     public void onClick(View v) { 
      setContentView(R.layout.word); 
     } 
    }; 
} 

回答

1

看看這個代碼,我在這裏,這應該幫助你一些。

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

public class SmartApp extends Activity 
{ 
    /** Called when the activity is first created. */ 
    @Override 
    public void onCreate(Bundle savedInstanceState) 
    { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.intro); 

     final Button firstTimeButton = (Button) findViewById(R.id.firstTimeButton); 
     firstTimeButton.setOnClickListener(
       new View.OnClickListener() 
     { 
         @Override 
         public void onClick(View v) 
         { 
           // TODO Auto-generated method stub 
           Intent userCreationIntent = new Intent(v.getContext(), UserCreation.class); 
           startActivityForResult(userCreationIntent, 0); 
         } 
       }); 
    } 
} 

當用戶點擊「首次按鈕」,用戶將採取「用戶創建頁面」。我相信你的代碼有一些錯誤。比較你與我提供的內容,你應該能夠看到差異並進行適當的修改。讓我知道如果這有幫助!

+0

startActivityForResult以何種方式引用要加載的新活動?在這裏,你只是通過它的意圖,而不是一個新的活動 – meburbo 2010-11-15 19:04:08

+0

我不完全確定。但是,這種方法適用於我和其他一些我已經幫助和合作的人。試試看,讓我知道它是否適合你。 – prolink007 2010-11-15 19:07:20

+0

好的,所以意圖中的上下文並聲明視圖(在這種情況下的按鈕)最終修復它。另外我忘了在AndroidManifest中聲明第二個Activity。仍然不完全理解視圖需要被宣佈爲最終的原因。謝謝您的幫助! – meburbo 2010-11-15 19:43:24