私はアプリを開発しています。メインのアクティビティには、タブホストと編集テキストフィールドがあります。タブホストは、タブを変更するときに各タブ内に異なるアクティビティをロードします。各タブに読み込まれる各アクティビティに、ボタンを配置しました。ボタンをクリックすると、メインアクティビティの編集テキストにテキストを表示する必要があります。しかし、メインアクティビティ以外のアクティビティで編集テキストフィールドを初期化しようとすると、「アプリが強制的に閉じられます」というメッセージが表示されます。
したがって、誰かが私が編集テキストを取得するのを手伝ってくれるなら、タブにロードされたアクティビティのボタンからボタンを押すことで価値を得ることができれば、それは大きな助けになります
これはスクリーンショットの青いボックスで、すべてのタブに読み込まれるアクティビティになり、そのうちのメインアクティビティになります
これは、強制終了が発生したときのLogcat出力の外観です。
java.lang.RuntimeException: Unable to start activity ComponentInfo{com.batz.voiceforyou/com.batz.voiceforyou.Things}: java.lang.NullPointerException
03-24 17:55:23.928: E/AndroidRuntime(23581): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2065)
03-24 17:55:23.928: E/AndroidRuntime(23581): at android.app.ActivityThread.startActivityNow(ActivityThread.java:1906)
03-24 17:55:23.928: E/AndroidRuntime(23581): at android.app.LocalActivityManager.moveToState(LocalActivityManager.java:135)
03-24 17:55:23.928: E/AndroidRuntime(23581): at android.app.LocalActivityManager.startActivity(LocalActivityManager.java:347)
03-24 17:55:23.928: E/AndroidRuntime(23581): at android.widget.TabHost$IntentContentStrategy.getContentView(TabHost.java:694)
03-24 17:55:23.928: E/AndroidRuntime(23581): at android.widget.TabHost.setCurrentTab(TabHost.java:358)
03-24 17:55:23.928: E/AndroidRuntime(23581): at android.widget.TabHost$2.onTabSelectionChanged(TabHost.java:150)
03-24 17:55:23.928: E/AndroidRuntime(23581): at android.widget.TabWidget$TabClickListener.onClick(TabWidget.java:553)
03-24 17:55:23.928: E/AndroidRuntime(23581): at android.view.View.performClick(View.java:4129)
03-24 17:55:23.928: E/AndroidRuntime(23581): at android.view.View$PerformClick.run(View.java:17143)
03-24 17:55:23.928: E/AndroidRuntime(23581): at android.os.Handler.handleCallback(Handler.java:615)
03-24 17:55:23.928: E/AndroidRuntime(23581): at android.os.Handler.dispatchMessage(Handler.java:92)
03-24 17:55:23.928: E/AndroidRuntime(23581): at android.os.Looper.loop(Looper.java:137)
03-24 17:55:23.928: E/AndroidRuntime(23581): at android.app.ActivityThread.main(ActivityThread.java:4802)
03-24 17:55:23.928: E/AndroidRuntime(23581): at java.lang.reflect.Method.invokeNative(Native Method)
03-24 17:55:23.928: E/AndroidRuntime(23581): at java.lang.reflect.Method.invoke(Method.java:511)
03-24 17:55:23.928: E/AndroidRuntime(23581): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:813)
03-24 17:55:23.928: E/AndroidRuntime(23581): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:580)
03-24 17:55:23.928: E/AndroidRuntime(23581): at dalvik.system.NativeStart.main(Native Method)
03-24 17:55:23.928: E/AndroidRuntime(23581): Caused by: java.lang.NullPointerException
03-24 17:55:23.928: E/AndroidRuntime(23581): at com.batz.voiceforyou.Things.onCreate(Things.java:19)
03-24 17:55:23.928: E/AndroidRuntime(23581): at android.app.Activity.performCreate(Activity.java:5013)
03-24 17:55:23.928: E/AndroidRuntime(23581): at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1079)
03-24 17:55:23.928: E/AndroidRuntime(23581): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2029)
03-24 17:55:23.928: E/AndroidRuntime(23581): ... 18 more
これがMainActivityコードです
public class MainActivity extends TabActivity {
String text="";
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
final EditText mainText=(EditText) findViewById(R.id.maintext);
Resources res = getResources();
TabHost tabs = getTabHost();
Intent regular = new Intent(this, Regular.class);
TabSpec reg = tabs.newTabSpec("Regular")
.setIndicator("", res.getDrawable(R.drawable.ic_launcher))
.setContent(regular);
Intent things = new Intent(this, Things.class);
TabSpec thngs = tabs.newTabSpec("Things")
.setIndicator("", res.getDrawable(R.drawable.ic_launcher))
.setContent(things);
tabs.addTab(reg);
tabs.addTab(thngs);
tabs.setCurrentTab(0);
}
}
これは、タブ内に読み込まれるアクティビティの1つです
public class Regular extends Activity {
String text="";
@Override
protected void onCreate(Bundle savedInstanceState) {
// TODO Auto-generated method stub
super.onCreate(savedInstanceState);
setContentView(R.layout.regular);
//final EditText mainText=(EditText) findViewById(R.id.maintext);
//text=mainText.getText().toString();
Button regbtn = (Button) findViewById(R.id.regularbutton);
regbtn.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
text=text+" regular";
//mainText.setText(text);
}
});
}
}
ここに私がコメントした3行が表示されます。これらの行を削除すると、アプリは起動時に強制的に閉じます。必要に応じて、レイアウトも共有できます