あなたの助けが必要です。「 FATAL ERROR: Main 」などに遭遇することなく、このプロジェクトを解決するのを手伝ってもらえますか? 次の手順を実行するプログラムを作成したいと考えています。
プレーヤー 1 と 2 の名前をスピナーに登録またはサインアップします。その後、EditText は空になります。
それぞれのスピナーに名前が表示されました。(プレイヤー1とプレイヤー2の名前の重複は私にとってはOKです)
スピナーで選択したプレイヤーの名前が何であれ、「名前を設定してプレイ!」をクリックすると、ボタン、インテントは結果のために別の .class を呼び出します。
私が予期していなかった唯一のことは、エラーが発生しなかった場合でも、迷惑なFORCE CLOSEエラーです。これが私のサンプルです:
メインクラス(AndroidSpinnerFromSQLiteActivity)のコードは次のとおりです。
//Variables
private Spinner spinner, spinner_2;
private Button add_button, add_button_2;
private EditText label_input, label_input_2;
//Response
public final static String EXTRA_MESSAGE_ONE = "com.example.databasetest.MESSAGEONE";
public final static String EXTRA_MESSAGE_TWO = "com.example.databasetest.MESSAGETWO";
@Override
public void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
//Identifying view by looking for the player 1 view's ID.
spinner = (Spinner) findViewById(R.id.Player_1_Spinner);
add_button = (Button) findViewById(R.id.Player_1_Sign_up_Button);
label_input = (EditText) findViewById(R.id.Player_1_Text_Field);
//Identifying view by looking for the player 2 view's ID.
spinner_2 = (Spinner) findViewById(R.id.Player_2_Spinner);
add_button_2 = (Button) findViewById(R.id.Player_2_Sign_up_Button);
label_input_2 = (EditText) findViewById(R.id.Player_2_Text_Field);
//Adding the spinner listener...
spinner.setOnItemSelectedListener(this);
spinner_2.setOnItemSelectedListener(this);
//Loading spinner's data from the database.
loadSpinnerData();
//Function for Buttons (Player 1)
add_button.setOnClickListener(new OnClickListener()
{
public void onClick(View v)
{
String label = label_input.getText().toString();
//Here's the process on how to register in the database.
if(label.trim().length() > 0)
{
//Database Handler from Class (Database_Handler.java)
Database_Handler db = new Database_Handler(getApplicationContext());
//Inserting new label into the database.
db.insertLabel(label);
//After typing, the text field is set to blank.
label_input.setText("");
//Normally, most smartphones and tablets only have a virtual keyboard.
InputMethodManager imm = (InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE);
imm.hideSoftInputFromWindow(label_input.getWindowToken(), 0);
loadSpinnerData();
}
else //If the input is null...
{
Toast.makeText(getApplicationContext(), "Please enter your name, player 1!", Toast.LENGTH_SHORT).show();
}
}
});
//Function for Buttons (Player 2)
add_button_2.setOnClickListener(new OnClickListener()
{
public void onClick(View v)
{
String label = label_input_2.getText().toString();
//Here's the process on how to register in the database.
if(label.trim().length() > 0)
{
//Database Handler from Class (Database_Handler.java)
Database_Handler db = new Database_Handler(getApplicationContext());
//Inserting new label into the database.
db.insertLabel(label);
//After typing, the text field is set to blank.
label_input_2.setText("");
//Normally, most smartphones and tablets only have a virtual keyboard.
InputMethodManager imm = (InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE);
imm.hideSoftInputFromWindow(label_input_2.getWindowToken(), 0);
loadSpinnerData();
}
else //If the input is null...
{
Toast.makeText(getApplicationContext(), "Please enter your name, player 2!", Toast.LENGTH_SHORT).show();
}
}
});
}
public void sendMessage(View v)
{
Intent intent = new Intent(this, Respond_Test.class);
EditText P1 = (EditText) findViewById(R.id.Player_1_Text_Field);
String message1 = P1.getText().toString();
EditText P2 = (EditText) findViewById(R.id.Player_2_Text_Field);
String message2 = P2.getText().toString();
intent.putExtra(EXTRA_MESSAGE_ONE, message1);
intent.putExtra(EXTRA_MESSAGE_TWO, message2);
startActivity(intent);
}
@Override
public boolean onCreateOptionsMenu(Menu menu)
{
getMenuInflater().inflate(R.menu.main, menu);
return true;
}
//Now, call a method called loadSpinnerData() from the onCreate() method.
private void loadSpinnerData()
{
Database_Handler db = new Database_Handler(getApplicationContext());
List<String> lables = db.getAllLabels();
//Creating an adapter for the spinner...
ArrayAdapter<String> data_adapter = new ArrayAdapter<String>(this, android.R.layout.simple_spinner_item, lables);
data_adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
spinner.setAdapter(data_adapter);
spinner_2.setAdapter(data_adapter);
}
//Action applied if a user chose this item.
public void onItemSelected(AdapterView<?> parent, View view, int position, long id)
{
String label = parent.getItemAtPosition(position).toString();
Toast.makeText(parent.getContext(), "You selected: " + label,
Toast.LENGTH_LONG).show();
}
public void onNothingSelected(AdapterView<?> arg0)
{
//Do nothing. I guess...
}
別のクラス ( Respond_Test )で名前を表示する応答の別のコードを次に示します。
@Override
public void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
Intent intent = getIntent();
String messageone = intent.getStringExtra(AndroidSpinnerFromSQLiteActivity.EXTRA_MESSAGE_ONE);
String messagetwo = intent.getStringExtra(AndroidSpinnerFromSQLiteActivity.EXTRA_MESSAGE_TWO);
TextView P1 = (TextView) findViewById(R.id.Player_1_ID);
TextView P2 = (TextView) findViewById(R.id.Player_2_ID);
P1.setText(messageone);
P2.setText(messagetwo);
setContentView(R.layout.respond);
}
メインの XML ( main.xml ):
<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" >
<LinearLayout
android:id="@+id/linearLayout1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentLeft="true"
android:layout_alignParentTop="true"
android:layout_marginTop="41dp" >
<TextView
android:id="@+id/textView1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Enter Player 1 Name:" />
</LinearLayout>
<LinearLayout
android:id="@+id/linearLayout2"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_alignParentLeft="true"
android:layout_below="@+id/linearLayout1" >
<EditText
android:id="@+id/Player_1_Text_Field"
android:layout_width="0dp"
android:layout_height="35dp"
android:layout_weight="1"
android:inputType="textNoSuggestions"
android:textSize="@dimen/padding_large" >
<requestFocus />
</EditText>
<Button
android:id="@+id/Player_1_Sign_up_Button"
android:layout_width="70dp"
android:layout_height="35dp"
android:text="@string/Sign_Up"
android:textSize="@dimen/padding_medium" />
</LinearLayout>
<LinearLayout
android:id="@+id/linearLayout3"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_alignParentLeft="true"
android:layout_below="@+id/linearLayout2" >
<Spinner
android:id="@+id/Player_1_Spinner"
android:layout_width="wrap_content"
android:layout_height="37dp"
android:layout_weight="1"
android:prompt="@string/PLAYER_1_PROMPT"
tools:listitem="@android:layout/simple_spinner_dropdown_item" />
</LinearLayout>
<LinearLayout
android:id="@+id/linearLayout4"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentLeft="true"
android:layout_below="@+id/linearLayout3" >
<TextView
android:id="@+id/TextView01"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="41dp"
android:text="Enter Player 2 Name:" />
</LinearLayout>
<LinearLayout
android:id="@+id/linearLayout5"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_alignParentLeft="true"
android:layout_below="@+id/linearLayout4" >
<EditText
android:id="@+id/Player_2_Text_Field"
android:layout_width="0dp"
android:layout_height="35dp"
android:layout_weight="5.47"
android:inputType="textPersonName" />
<Button
android:id="@+id/Player_2_Sign_up_Button"
android:layout_width="70dp"
android:layout_height="35dp"
android:text="@string/Sign_Up"
android:textSize="@dimen/padding_medium" />
</LinearLayout>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_alignParentLeft="true"
android:layout_below="@+id/linearLayout5" >
<Spinner
android:id="@+id/Player_2_Spinner"
android:layout_width="wrap_content"
android:layout_height="37dp"
android:layout_weight="1"
android:prompt="@string/PLAYER_2_PROMPT" />
</LinearLayout>
<Button
android:id="@+id/button1"
android:layout_width="wrap_content"
android:layout_height="34dp"
android:layout_alignParentBottom="true"
android:layout_centerHorizontal="true"
android:layout_marginBottom="62dp"
android:text="@string/GAME"
android:onClick="sendMessage" />
</RelativeLayout>
XML for the response (**respond.xml**):
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent" >
<TextView
android:id="@+id/Player_1_ID"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentLeft="true"
android:layout_alignParentTop="true"
android:layout_marginLeft="16dp"
android:layout_marginTop="64dp"
android:text="TextView"
android:textSize="20sp" />
<TextView
android:id="@+id/Player_2_ID"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignLeft="@+id/Player_1_ID"
android:layout_below="@+id/Player_1_ID"
android:layout_marginTop="24dp"
android:text="TextView"
android:textSize="20sp" />
</RelativeLayout>
そしてマニフェスト:
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.example.databasetest"
android:versionCode="1"
android:versionName="1.0" >
<uses-sdk
android:minSdkVersion="4"
android:targetSdkVersion="15" />
<application
android:icon="@drawable/ic_launcher"
android:label="@string/app_name"
android:theme="@style/AppTheme" >
<activity
android:name=".AndroidSpinnerFromSQLiteActivity"
android:label="@string/title_activity_android_spinner_from_sqlite"
android:theme="@style/AppTheme">"
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
<activity
android:name=".Respond_Test"
android:label="@string/title_activity_android_spinner_from_sqlite"
android:theme="@style/AppTheme"/>"
</application>
</manifest>
よろしくお願いします。