有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java如何从另一个活动访问变量

因此,我试图在Locator活动中从我的主活动访问一个字符串,如果我试图将该字符串实例化为公共静态,它会抛出一个错误,并说我不能在非静态类中声明静态字符串,当我试图通过意图获取它时,我会得到一个错误,它说。[编辑]现在,我能够无错误地访问意图,现在我得到一个NullPointerException

No Activity found to handle Intent { (has extras) }

这是我的主要活动代码:

options = (Spinner) findViewById(R.id.optionselect);
        ArrayAdapter<CharSequence> adapter = ArrayAdapter.createFromResource(this,
                R.array.options, 安卓.R.layout.simple_spinner_item);
        adapter.setDropDownViewResource(安卓.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);

我的定位器活动代码:

行->;204String XxXChoicei = getIntent().getStringExtra("XxXchoice");

全对数

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 安卓.view.View$1.onClick(View.java:3860)
            at 安卓.view.View.performClick(View.java:4480)
            at 安卓.view.View$PerformClick.run(View.java:18686)
            at 安卓.os.Handler.handleCallback(Handler.java:733)
            at 安卓.os.Handler.dispatchMessage(Handler.java:95)
            at 安卓.os.Looper.loop(Looper.java:157)
            at 安卓.app.ActivityThread.main(ActivityThread.java:5872)
            at java.lang.reflect.Method.invokeNative(Native Method)
            at java.lang.reflect.Method.invoke(Method.java:515)

共 (4) 个答案

  1. # 1 楼答案

    试试这个

     Intent i = new Intent(Youractivity.this, locator.class);
     Bundle b = new Bundle();
     b.putString("XxXchoice", XxXSelect);
     i.putExtras(b);
     startActivity(i);
    

    有关更多信息,请访问#Intent

  2. # 2 楼答案

    更改代码以摆脱Bundle

    Intent i = new Intent(MainActivity.this, Locator.class);
    i.putExtra("XxXchoice", XxXSelect);
    startActivity(i);
    

    然后在Locator类中执行此操作

    String XxXChoicei = getIntent().getStringExtra("XxXchoice");
    

    您将extaBundle添加到Intent中,使事情变得复杂,因为该Intent已经能够携带自己的Bundle

  3. # 3 楼答案

    您需要静态变量来在应用程序类中声明全局变量

    因此,请将代码更改为:

    class GlobalClass extends Application {
    
      public static String myVal;
    
    }
    

    然后,无论何时需要访问此数据,都可以通过以下方式获取应用程序对象:

    GlobalClass global=(GlobalClass)context.getApplication();
    global.myVal="anything";
    

    别忘了把它添加到AndroidManifest中。xml文件

    <application
            android:name="packagename.GlobalClass"
            ....
            ....
            //other codes here
    </application>
    
  4. # 4 楼答案

    如果您想使用intent,可以使用md-answer。如果要从主活动访问字符串。java你可以这样做

    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();
    

    此方法用于在需要时访问变量