我有主要活动:
public class MainActivity extends AppCompatActivity {
Button btnadd;
int a1 = 10;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
btnadd = (Button) findViewById(R.id.btnadd);
btnadd.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
final SecondAct sa = new SecondAct();
sa.ttl(a1);
}
});
}
}
我还有其他活动:
public class SecondAct extends Activity {
public TextView txt2;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.second);
txt2 = (TextView) findViewById(R.id.txt2);
}
public void numsum(int no)
{
txt2.setText(String.valueOf(no));
}
}
activity_main.xml中
<?xml version="1.0" encoding="utf-8"?>
<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"
>
<Button
android:id="@+id/btnadd"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="addd"></Button>
<LinearLayout
android:layout_below="@+id/btnadd"
android:layout_width="match_parent"
android:layout_height="match_parent">
<include layout="@layout/second"></include>
</LinearLayout>
</RelativeLayout>
当我点击主要活动的按钮来设置第二个活动的textview文本时,它会给我错误。
错误:
FATAL EXCEPTION: main
Process: com.example.sumdemo, PID: 13809
java.lang.NullPointerException
at com.example.sumdemo.MainActivity$1.onClick(MainActivity.java:28)
at android.view.View.performClick(View.java:4463)
at android.view.View$PerformClick.run(View.java:18770)
at android.os.Handler.handleCallback(Handler.java:808)
at android.os.Handler.dispatchMessage(Handler.java:103)
at android.os.Looper.loop(Looper.java:193)
at android.app.ActivityThread.main(ActivityThread.java:5333)
at java.lang.reflect.Method.invokeNative(Native Method)
at java.lang.reflect.Method.invoke(Method.java:515)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:824)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:640)
at dalvik.system.NativeStart.main(Native Method)
如何在不通过intent
数据的情况下从主要活动设置第二个活动值?
答案 0 :(得分:2)
static void Main(string[] args)
{
CultureInfo cultureDutch = new CultureInfo("nl-NL");
CultureInfo cultureUS = new CultureInfo("en-US");
System.Threading.Thread.CurrentThread.CurrentCulture = cultureDutch;
Console.WriteLine("Input 3,3 --> Expected 3,3");
Console.WriteLine("Output = " + Convert.ToDouble("3,3", cultureDutch));
// Actual result --> 3,3
Console.WriteLine("Input 3,3 --> Expected InvalidCastException");
Console.WriteLine("Output = " + Convert.ToDouble("3,3", cultureUS));
// Actual result --> 33
Console.WriteLine();
Console.WriteLine();
System.Threading.Thread.CurrentThread.CurrentCulture = cultureUS;
Console.WriteLine("Input 3.3 --> Expected InvalidCastException");
Console.WriteLine("Output = " + Convert.ToDouble("3.3", cultureDutch));
// Actual result --> 33
Console.WriteLine("Input 3.3 --> Expected 3.3");
Console.WriteLine("Output = " + Convert.ToDouble("3.3", cultureUS));
// Actual result --> 3.3
Console.ReadLine();
}
永远不要在扩展 final SecondAct sa = new SecondAct();
sa.ttl(a1);
的类上使用new运算符。您必须使用Activity
启动startActivity
,并通过SecondAct
对象提供其他信息
答案 1 :(得分:0)
将Application类与静态参数一起使用。
那是
class MyApp extends Application{
public static TextView tv;
}
在第一项活动中:
usemyapp.tv = (TextView) findViewById(...);
在某个地方有权访问的人可以使用:
if (MyApp.tv != null)
MyApp.tv.setText("a new text");
不要忘记使用处理程序将它包装在mainUiThread中。
AndroidMainfest.xml
文件中的使用此:
<application
android:name=".MyApp" <<<<<<<<<<<<<<<<<<<<<<<this the name of the class
>
此外,不要通过构造函数创建活动类。这是一个非常糟糕的主意:)你有这个错误,因为你已经创建了类,但onCreate()
方法没有调用,也没有附加到Android UI进程。
答案 2 :(得分:0)
答案 3 :(得分:0)
当您通过构造函数创建Activity
对象时,您无法调用其生命周期方法(例如onCreate
),因此您的活动没有View
你无法访问你的观点。你必须使用startActivity
让android处理创建Activity
对象并调用它的生命周期方法。在膨胀视图后你应该改变它的视图。对于您的情况,您可以通过Intent
传递额外数据并在第二个Activity