2011-09-04 147 views
1

所以,我有三個活動/屏幕。在第一個屏幕上,有一個按鈕,當按下時,打開第二個屏幕。在第二個屏幕上,有一個按鈕可以打開屏幕3,但另一個按鈕可以返回屏幕1.我無法在屏幕2上同時使用這兩個按鈕。 (一個工作,另一個不工作,反之亦然)。用於打開新活動的按鈕?

屏幕1級的Java:

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

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

    Button next = (Button) findViewById(R.id.part1to2); 
    next.setOnClickListener(new View.OnClickListener() { 
     public void onClick(View view) { 
      Intent myIntent = new Intent(view.getContext(), Screen2.class); 
      startActivityForResult(myIntent, 0); 
     } 

    }); 
    } 
    } 

屏幕2.java:

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

public class Screen2 extends Activity { 

/** Called when the activity is first created. */ 
public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.second); 

    Button next = (Button) findViewById(R.id.goto1); 
    next.setOnClickListener(new View.OnClickListener() { 
     public void onClick(View view) { 
      Intent intent = new Intent(); 
      setResult(RESULT_OK, intent); 


    Button next = (Button) findViewById(R.id.goto3); 
    next.setOnClickListener(new View.OnClickListener() { 
     public void onClick(View view) { 
      Intent myIntent = new Intent(view.getContext(), Screen3.class); 
      startActivityForResult(myIntent, 0); 
      finish(); 
     } 

     }); 
    } 
    }); 
} 
} 

屏幕3.java

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

public class Screen3 extends Activity { 

/** Called when the activity is first created. */ 
public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.third); 

     } 

} 

我的清單:

<?xml version="1.0" encoding="utf-8"?> 
<manifest xmlns:android="http://schemas.android.com/apk/res/android" 
    package="com.gamer.network2" 
    android:versionCode="1" 
    android:versionName="1.0"> 
<uses-sdk android:minSdkVersion="7" /> 

<application android:icon="@drawable/icon" android:label="@string/app_name"> 
    <activity android:name=".FirstActivity" 
       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=".Screen2"></activity> 
<activity android:name=".Screen3"></activity> 
</application> 
</manifest> 

那麼,如何讓屏幕2上的兩個按鈕同時工作?

+0

你怎麼有兩個名稱相同的按鈕?這是複製/粘貼錯誤嗎? – Egor

+0

嗯,我猜我想我可以從按鈕的代碼工作,並複製它,所以另一個按鈕將工作,但我想我忘了改變這一點。所以我現在改了它,但它仍然不起作用。 – Cole

回答

2

兩個按鈕都是相同的名稱,並被錯誤地聲明。

Button next = (Button) findViewById(R.id.goto1); 
    next.setOnClickListener(new View.OnClickListener() { 
     public void onClick(View view) { 
      Intent intent = new Intent(); 
      setResult(RESULT_OK, intent); 


    Button next = (Button) findViewById(R.id.goto3); 
    next.setOnClickListener(new View.OnClickListener() { 
     public void onClick(View view) { 
      Intent myIntent = new Intent(view.getContext(), Screen3.class); 
      startActivityForResult(myIntent, 0); 
      finish(); 
     } 

     }); 
    } 
    }); 

嘗試,而不是:

Button goto3 = (Button) findViewById(R.id.goto3); 
    goto3.setOnClickListener(new View.OnClickListener() { 
     public void onClick(View view) { 
      // Code here 
     }  
     }); 

    Button goto1 = (Button) findViewById(R.id.goto1); 
    goto1.setOnClickListener(new View.OnClickListener() { 
     public void onClick(View view) { 
      // Code here 
     }  
     }); 

編輯:科爾,見下文,這是代碼我的一個應用程序的工作,有兩個不同的按鈕指向兩個不同的活動。我還包含了AndroidManifest.xml中的代碼。

mBtnPlayCourse = (Button) findViewById(R.id.btn_screenstart_playcourse); 
    mBtnNewCourse = (Button) findViewById(R.id.btn_screenstart_newcourse); 

    mBtnPlayCourse.setOnClickListener(new OnClickListener() { 
     @Override 
     public void onClick(View v) { 
      final Intent i = new Intent(Screen_Start.this, Screen_Players.class);    
      startActivity(i); 
     } 
    }); 

    mBtnNewCourse.setOnClickListener(new OnClickListener() { 
     @Override 
     public void onClick(View v) { 
      final Intent i = new Intent(Screen_Start.this, Screen_CreateCourse.class); 
      startActivity(i); 
     } 
    }); 

AndroidManifest.xml

<activity android:name=".Screen_CreateCourse" android:label="@string/app_name"> 
    </activity> 

    <activity android:name=".Screen_Players" android:label="@string/app_name"> 
    </activity> 
+0

當你說//代碼在這裏,我應該有兩個相同的代碼?我有:Intent myIntent = new Intent(view.getContext(),FirstActivity.class); startActivityForResult(myIntent,0);對於第一個按鈕,但是當我在第二個按鈕上也有時,它不起作用,但是第一個按鈕可以。 – Cole

+0

如果你想加載不同的意圖,那麼你想要不同的代碼。從我給你的代碼開始,按照你所說的活動進行,你會希望得到** goto1 **:'Intent myIntent = new Intent(Screen2.this,FirstActivity.class); startActivityForResult(myIntent,0);'和這個爲** goto3 **:'Intent myIntent = new Intent(Screen2.this,Screen3.class); startActivityForResult(myIntent,0);'。此外,如果這不起作用,請解釋是否有任何錯誤顯示,它在做什麼,它不是什麼等。 – Ricky

+0

我沒有在Logcat中發現任何錯誤。當我點擊goto1時,Logcat表示它顯示活動Screen1(這是正確的),但goto3按鈕根本沒有做任何事情。 Logcat中沒有任何內容,模擬器中沒有任何操作。 – Cole