所以我试图在我的Locator活动中从我的主要活动中访问一个字符串,如果我尝试将String实例化为公共静态,它会抛出一个错误并说我不能在非静态类中声明一个静态字符串,当我试图通过意图得到它我得到一个错误,说。[编辑]现在我已经能够访问意图而没有错误现在我得到一个NullPointerException
No Activity found to handle Intent { (has extras) }
这是我的主要活动代码:
options = (Spinner) findViewById(R.id.optionselect);
ArrayAdapter<CharSequence> adapter = ArrayAdapter.createFromResource(this,
R.array.options, android.R.layout.simple_spinner_item);
adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
options.setAdapter(adapter);
String XxXSelect =options.getSelectedItem().toString();
Intent i = new Intent(MainActivity.this,Locator.class);
i.putExtra("XxXchoice",XxXSelect);
startActivity(i);
我的定位器活动代码:
行 - &gt; 204 String XxXChoicei = getIntent().getStringExtra("XxXchoice");
完整的logcat
Caused by: java.lang.NullPointerException
at com.example.adrian.trucktracker.Locator.Updater(Locator.java:204)
at com.example.adrian.trucktracker.Locator.clickedUpdate(Locator.java:265)
at java.lang.reflect.Method.invokeNative(Native Method)
at java.lang.reflect.Method.invoke(Method.java:515)
at android.view.View$1.onClick(View.java:3860)
at android.view.View.performClick(View.java:4480)
at android.view.View$PerformClick.run(View.java:18686)
at android.os.Handler.handleCallback(Handler.java:733)
at android.os.Handler.dispatchMessage(Handler.java:95)
at android.os.Looper.loop(Looper.java:157)
at android.app.ActivityThread.main(ActivityThread.java:5872)
at java.lang.reflect.Method.invokeNative(Native Method)
at java.lang.reflect.Method.invoke(Method.java:515)
答案 0 :(得分:3)
你需要静态变量来在Application Class中声明全局变量,
所以将您的代码更改为:
class GlobalClass extends Application {
public static String myVal;
}
然后,当您需要访问此数据时,请通过以下方式获取Application对象:
GlobalClass global=(GlobalClass)context.getApplication();
global.myVal="anything";
并且不要忘记将其添加到AndroidManifest.xml文件
<application
android:name="packagename.GlobalClass"
....
....
//other codes here
</application>
答案 1 :(得分:2)
试试这个
Intent i = new Intent(Youractivity.this, locator.class);
Bundle b = new Bundle();
b.putString("XxXchoice", XxXSelect);
i.putExtras(b);
startActivity(i);
有关详细信息,请转到#Intent
答案 2 :(得分:0)
更改代码以摆脱Bundle
。
Intent i = new Intent(MainActivity.this, Locator.class);
i.putExtra("XxXchoice", XxXSelect);
startActivity(i);
然后在Locator类中执行此操作...
String XxXChoicei = getIntent().getStringExtra("XxXchoice");
您通过向Bundle
添加一个exta Intent
来复杂化,Bundle
已经能够携带{{1}}个。{/ p>
答案 3 :(得分:-1)
如果您想使用意图,可以使用M D答案。如果你想从Main Activity.java访问String,你可以这样做
in your **MainActivity**
//declare a method
public static String getString() {
String result;
// assign value to string here
result = "your assingment"
return result;
}
并在您的另一项活动中
//get value like this
String string = MainActivity.getString();
这种方式用于在需要时访问变量。