2013-04-11 62 views
0

忍受我,這是我的第一個Android項目。Android java的意圖和活動

我一直在做一個簡單的Java類,Event,併爲它製作了CRUD功能。現在我正在做佈局,並且無法弄清楚單擊按鈕後我如何啓動這些活動。這是我正在使用的代碼。

activity_main.xml;

<Button 
     android:id="@+id/newEventButton" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_alignParentBottom="true" 
     android:layout_alignParentRight="true" 
     android:text="New Event" /> 

MainActivity.java;

public void addEvent(MenuItem item) { 
     Intent i = new Intent(this, AddEventActivity.class); 
     startActivity(i); 
    } 

AndroidManifest.xml;

<activity 
     android:name="com.example.eventmanager.AddEventActivity" 
     android:label="@string/title_activity_add_event" 
     android:parentActivityName="com.example.eventmanager.MainActivity" 
     android:noHistory="true"> 
     <meta-data 
      android:name="android.support.PARENT_ACTIVITY" 
      android:value="com.example.eventmanager.MainActivity" /> 
    </activity> 

我需要什麼,要加入到這些段將鏈接newEventButton推出AddEventActivity.class

回答

1

onCreate您的主要活動setContentView後添加以下代碼

// get newEventButton  
Button addEvent = (Button) findViewById(R.id.newEventButton); 
// Listen for button click and start AddEventActivity 
addEvent.setOnClickListener(new onClickListener() 
{ 
    @Override 
    public void onClick(View v) 
    { 
     startActivity(new Intent(this, AddEventActivity.class); 
    } 
}); 
+0

完美。感謝您的解決方案,並找出我錯過的東西! – pjmil 2013-04-11 04:06:14

0
<activity 
    android:name="com.example.eventmanager.MainActivity" 
    android:label="@string/title_activity_add_event" > 
     <intent-filter> 
      <action android:name="android.intent.action.MAIN" /> 
      <category android:name="android.intent.category.LAUNCHER" /> 
     </intent-filter> 
</activity> 
<activity 
    android:name="com.example.eventmanager.AddEventActivity" 
    android:label="@string/title_activity_add_event" 
     <intent-filter> 
      <action android:name="android.intent.action.ADDEVENTACTIVITY" /> 
      <category android:name="android.intent.category.DEFAULT" /> 
     </intent-filter> 
</activity> 

這裏u能像這樣工作也

編輯 不要你設定的onclick監聽器,如果沒有拷貝在OnCreate中

Button b = (Button) findViewById(R.id.newEventButton); 
b.setOnClickListener(new onClickListener() 
{ 
@Override 
public void onClick(View v) 
{ 
Intent i = new Intent("android.intent.action.ADDEVENTACTIVITY"); 
startActivity(i); 
} 
}); 
} 
+0

你能解釋一下嗎?當單擊'newEventButton'時,該代碼如何知道啓動? – pjmil 2013-04-11 03:29:10

+0

你需要調用destroy MainAcivity來釋放資源,或者在onPause()中調用finish()或者直接調用onDestroy()。 – 2013-04-11 03:33:13

+0

當按鈕被點擊時,Android會檢查清單中指定爲「android.intent.action.ADDEVENTACTIVITY」的意圖,並且意圖的關聯類也在清單中,它是android:name =「com.example.eventmanager.AddEventActivity」因此,這個班級將開始工作,你的呼叫startactivity – 2013-04-11 03:43:48

1

您需要添加一個OnClickListener添加到Activity的Java代碼中的Button。通常你在onCreate()中做到這一點。

public class MainActivity extends Activity implements OnClickListener { 
    public void onCreate(Bundle saved) { 
     super.onCreate(saved); 
     setContentView(R.layout.activity_main); 

     Button button = (Button) findViewById(R.id.newEventButton); 
     button.setOnClickListener(this); 
    } 

    public void onClick(View v) { 
     switch(v.getId()) { 
     case R.id.newEventButton: 
      Intent i = new Intent(this, AddEventActivity.class); 
      startActivity(i); 
      break; 
     } 
    } 
}